Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 590
от 12.09.2006, 18:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 376, Экспертов: 65
В номере:Вопросов: 6, Ответов: 7


Вопрос № 54536: Здравствуйте уважаемые эксперты!!! Скажите пожалуйста, как программно узнать дату создания и размер файла (например, текстового)...
Вопрос № 54566: Добрый день! скажите пожалуйста, можно ли создать ДЛЛ-библиотеку на делфи используя лишь консольный компилятор DCC32.exe? Я смотрел его ключи, но ничгео похожего на создание ДЛЛ не нашёл (разве что делать сишный obj, а потом линковать линковщиком...
Вопрос № 54577: Здравствуйте. Установил новый компонент ATViewer. Окно ".. successfuly installed" выдалось, все нормально. Если залезть в Components|Instaled Packages то увидим, что он и там зарегистрировался под ником ATViewer. Если выделить строчку с его...
Вопрос № 54591: Добрый день! Уважаемые Эксперты!!! У меня к Вам несколько вопросов. 1 У меня база в Акцессе мне нужно импорт и экспорт (я написал код используя макросы) вы можете подсказать другой вариант /данный код работает с Акцесс 2000, с Акцесс97 не хоч...
Вопрос № 54618: Людии! как в дельфе через едит1 переименовать файл?...
Вопрос № 54635: Доброго дня. Есть мальнький вопросик. Как создать файл в своем формате для хранения уменьшенный изображений (thumbnails) и потом прочитать и отбразить. Хотелось бы с примером (особенно для чтения) или ссылку где про это можно почитать....

Вопрос № 54.536
Здравствуйте уважаемые эксперты!!!
Скажите пожалуйста, как программно узнать дату создания и размер файла
(например, текстового)
Отправлен: 06.09.2006, 18:13
Вопрос задал: Piit (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Татьяна
Здравствуйте, Piit!
Для этого существует апи-функция GetFileInformationByHandle

Примерно так это выглядит в коде:
var
fhan : integer;
info : _BY_HANDLE_FILE_INFORMATION; // структура получения информации о файле
tm : _SYSTEMTIME; //системное время, структура, содержащая поля типа mDay..
begin
fhan := FileOpen('c: est.txt',fmopenread); //открываете файл, получаете его handle
GetFileInformationByHandle(fhan,info); //получаете необходимую информацию
FileTimeToSystemTime(info.ftCreationTime,tm); //преобразуете время создания в необходиму структуру
....
а далее обращаетесь к полям данной структуры

В этой же структуре вы можете получить и размер файла, однако его можно получить и немного легче, например так

fsize = fileseek(fhan,0,2); // говорит о том, что вы смещаетесь в файле на 0 байт с конца, т.е. позиция и будет говорить о размере


---------
Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус: Студент)
Ответ отправлен: 06.09.2006, 19:22
Оценка за ответ: 5

Отвечает: Vanektoo
Здравствуйте, Piit!
function GetFileDate(FileName: string): TDateTime;
var
intFileAge: LongInt;
begin
intFileAge := FileAge(FileName);
if intFileAge = -1 then
Result := 0
else
Result := FileDateToDateTime(intFileAge)
end;
Ответ отправил: Vanektoo (статус: 1-ый класс)
Ответ отправлен: 06.09.2006, 19:52
Оценка за ответ: 5


Вопрос № 54.566
Добрый день!
скажите пожалуйста, можно ли создать ДЛЛ-библиотеку на делфи используя лишь консольный компилятор DCC32.exe? Я смотрел его ключи, но ничгео похожего на создание ДЛЛ не нашёл (разве что делать сишный obj, а потом линковать линковщиком)
Отправлен: 06.09.2006, 22:44
Вопрос задал: Вiктор (статус: 6-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Вiктор!
Вы немножко не туда смотрели. Компилятор тут не при чем. :)
Просто необходимо оформить исходник программы так, чтобы компилятор видел, что это DLL, а не что-либо другое. Принцип создания DLL универсален как для СиСи++, так и для Дельфи:
library mydll; {Заметьте, что для DLL определяющее слово library}
uses SysUtils, Classes;

{Определяем функцию как stdcall}
function GetSimpleText(LangRus: Boolean): PChar; stdcall;
begin
{В зависимости от LangRus возвращаем русскую (True) либо английскую (False) фразу}
if LangRus then
Result := PChar('Привет, чувак!')
else
Result := PChar('Hi, gay!');
end;

{Директива exports указывает, какие функции будут экспортированы этой DLL}
exports GetSimpleText;

begin
end.
Вот и все. Теперь в командной строке задаете:
dcc32 mydll.dpr
и получаете DLL'ку. :)
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 07.09.2006, 07:31
Оценка за ответ: 5
Комментарий оценки:
Спасибо, грамотный и профессиональный ответ.
Работая с ассемблером я привык что большая часть настроек даётся через ключи. Паскаль учил ещё в школе, под дос, и до таких тонкостей как создание ДЛЛ не доходил.
И ещё: я не использую *.DPR, я сразу кормлю dcc32 паскалевский файл. Я с консолью решил работать как раз чтобы не морочиться со всякими дополнительными файлами, которых я не понимаю.


Вопрос № 54.577
Здравствуйте. Установил новый компонент ATViewer. Окно ".. successfuly installed" выдалось, все нормально. Если залезть в Components|Instaled Packages то увидим, что он и там зарегистрировался под ником ATViewer. Если выделить строчку с его названием и нажать кнопочку "Components", то увидим три красивейших компонента (имеется в виду красота самих иконок) под названиями TATBinHex, TATViewer и TWMP.
Галочка напротив самого этого psckage'а проставлена нормально, только одна незадача - а где он в палитре компонентов-то? Это что, библиотека? Но для библиотек окно components пустое. Да и вообще, это совершенно точно должен быть именно визуальный компонент.
Отправлен: 07.09.2006, 00:51
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Савенко Вадим Иванович
Здравствуйте, Blackie!
В D2005 они находятся на вкладке Samples. Думаю, что и в других версиях должны быть там же.
Ответ отправил: Савенко Вадим Иванович (статус: 10-ый класс)
Ответ отправлен: 07.09.2006, 05:58
Оценка за ответ: 4
Комментарий оценки:
У меня не все компоненты на этой вкладке. Один обнаружился в ActiveX.


Вопрос № 54.591
Добрый день! Уважаемые Эксперты!!!
У меня к Вам несколько вопросов.
1 У меня база в Акцессе мне нужно импорт и экспорт (я написал код используя макросы) вы можете подсказать другой вариант /данный код работает с Акцесс 2000, с Акцесс97 не хочет работать выводить ошибку не зарегист класс/.
2 Используя запрос sql, выведеные данные dbgrid экспортировать и импортировать.
спасибо всем!!!

Приложение:

Отправлен: 07.09.2006, 08:31
Вопрос задал: ERA (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Werewolf
Здравствуйте, ERA!

Вариант 1
Используйте EhLib c http://www.ehlib.com/RUS/
там есть импорт экспорт и свой компонет доступа к базам ACCESS.

Вариант 2
Не пользуйтесь компонентами TAccessApplication они используют интерфейсы ACCESS версии которую Вы выбрали при установке Delphi. Вместо этого можно использовать
var
Access: Variant;
begin
// Открываем Access
try
Access := GetActiveOleObject('Access.Application');
except
Access := CreateOleObject('Access.Application');
end;
// Открываем базу данных
// Второй параметр указывает - будет ли база открыта в Exclusive режиме
Access.OpenCurrentDatabase('c:erkanatdase.mdb', True);
Access.DoCmd.TransferText(acimportdelim,'','temp1','c:erkanatdase2.txt','','','1251');

< ... >

// Закрываем базу данных
Access.CloseCurrentDatabase;

// Закрываем Access
{const
acQuitPrompt = $00000000;
acQuitSaveAll = $00000001;
acQuitSaveNone = $00000002;}
Access.Quit(acQuitSaveAll);
Удачи.
Ответ отправил: Werewolf (статус: Студент)
Ответ отправлен: 07.09.2006, 10:34
Оценка за ответ: 5
Комментарий оценки:
Спасибо


Вопрос № 54.618
Людии! как в дельфе через едит1 переименовать файл?
Отправлен: 07.09.2006, 12:15
Вопрос задал: SAN (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Coupler
Здравствуйте, SAN!
Вместо 'новое имя файла' подставьте form1.edit1.text.
movefile (pchar('имя файла'),pchar('новое имя файла'));
Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 07.09.2006, 12:59


Вопрос № 54.635
Доброго дня. Есть мальнький вопросик. Как создать файл в своем формате для хранения уменьшенный изображений (thumbnails) и потом прочитать и отбразить. Хотелось бы с примером (особенно для чтения) или ссылку где про это можно почитать.
Отправлен: 07.09.2006, 14:29
Вопрос задал: CjJoker (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Савенко Вадим Иванович
Здравствуйте, CjJoker!
То, что Вы называете уменьшенными копиями изображений, на самом деле
являются изображениями нормальных размеров. Просто они выводятся в
компонент TImage со свойством Stretch:= true.
Самый простой способ - хранить их в директории программы и сделать
для них отдельную директорию

uses
..., jpeg, ...;

var
PictureDir: string;
...

procedure TForm1.FormCreate(Sender: TObject);
begin
PictureDir:= GetCurrentDir + 'Pictures';
end;

procedure TForm1.FormShow(Sender: TObject);
begin
Image1.Picture.LoadFromFile(SkinDir + 'picture1.jpg');
end;
Ответ отправил: Савенко Вадим Иванович (статус: 10-ый класс)
Ответ отправлен: 07.09.2006, 18:07


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.36 от 06.09.2006
Яндекс Rambler's Top100

В избранное