Текущий архив: 2003.07.14;
Скачать: CL | DM;
Вниз
Работа с текстовым файлом Найти похожие ветки
← →
-=alive=- (2003-06-29 20:08) [0]Добрый день , подскажите пожалуйста где лучше почитать про работу с текстовыми файлами .Просто надо сделать чтоб программа информация о программе как её версия и дата последней компиляции хранилась в этом файле и постоянно себя проверяла .При изменениях в этом файле чтоб выдавалось сообщение пользователю .
Заранее спасибо , Илья .
← →
Ihor Osov'yak (2003-06-29 21:08) [1]readln, writeln, text + F1..
Или любой учебник по паскалю..
Зы - а идея хранения инфо о программе в текстовом файле не есть хорошая идея.
← →
-=alive=- (2003-06-29 21:36) [2]а какие есть предложения по этому поводу , как лучше поступить
← →
Palladin (2003-06-29 21:38) [3]ну а какая цель приследуется, чего то я недопонял...
зачем за текстовым файлом следить то?
← →
Shluz (2003-06-30 00:08) [4]можно .ini использовать или реестр -- удобней..
← →
-=alive=- (2003-06-30 03:00) [5]Palladin ©
следить стоит по причине того что пользователи не всегда используют последнюю версию программы .
Shluz ©
для меня что ини файл темный лес что реестр , Обработка в принципе таже самая что текстового файла , или я ошибаюсь ?
← →
Rol (2003-06-30 06:13) [6]TIniFile+F1.
← →
Palladin (2003-06-30 08:56) [7]
> -=alive=- © (30.06.03 03:00)
что то я не понял, каким образом ты собираешься это проследить при помощи текстового файла?
← →
Kair (2003-06-30 09:01) [8]>-=alive=- © (30.06.03 03:00)
>для меня что ини файл темный лес что реестр , Обработка в >принципе таже самая что текстового файла , или я ошибаюсь ?
Не, лучше ини.
← →
Edward (2003-06-30 09:43) [9]По поводу получения версии файла:
procedure TFileVersionInfo.FindFileVersionInfo;
// calls the fileversioninfo API and sets the component properties
var
StringBuffer : PChar;
VersionPointer : PChar;
Size : DWord;
VersionValueLength : DWord;
fCompanyName : String;
fFileDescription : String;
fFileVersion : String;
fInternalName : String;
fLegalCopyright : String;
fLegalTradeMarks : String;
fOriginalFilename : String;
fProductName : String;
fProductVersion : String;
fComments : String;
fExecutableFile : String;
fCountryCode : String;
begin
// clear all properties
fCompanyName := "";
fFileDescription := "";
fFileVersion := "";
fInternalName := "";
fLegalCopyright := "";
fLegalTradeMarks := "";
fOriginalFilename := "";
fProductName := "";
fProductVersion := "";
fComments := "";
fCountryCode := "";
// get size of fileversioninfo buffer
Size := GetFileVersionInfoSize(PChar(fExecutableFile), Size);
if Size > 0 then begin
// fileversioninfo exists
// allocate memory for fileversioninfo strings
StringBuffer := AllocMem(Size);
// copy fileversioninfo into buffer
GetFileVersionInfo(PChar(fExecutableFile), 0, Size, StringBuffer);
// convert Translation to correct countrycode
VerQueryValue(StringBuffer, PChar("\VarFileInfo\Translation"),
Pointer(VersionPointer), VersionValueLength);
fCountryCode :=
IntToHex(PTranslation(VersionPointer)^.b2, 2) +
IntToHex(PTranslation(VersionPointer)^.b1, 2) +
IntToHex(PTranslation(VersionPointer)^.b4, 2) +
IntToHex(PTranslation(VersionPointer)^.b3, 2);
// get company name
if VerQueryValue(StringBuffer, PChar("\StringFileInfo\" + fCountryCode + "\" +
"CompanyName"), Pointer(VersionPointer), VersionValueLength) then
fCompanyName := StrPas(VersionPointer);
// get file description
if VerQueryValue(StringBuffer, PChar("\StringFileInfo\" + fCountryCode + "\" +
"FileDescription"), Pointer(VersionPointer), VersionValueLength) then
fFileDescription := StrPas(VersionPointer);
// get file version
if VerQueryValue(StringBuffer, PChar("\StringFileInfo\" + fCountryCode + "\" +
"FileVersion"), Pointer(VersionPointer), VersionValueLength) then
fFileVersion := StrPas(VersionPointer);
// get internal name
if VerQueryValue(StringBuffer, PChar("\StringFileInfo\" + fCountryCode + "\" +
"InternalName"), Pointer(VersionPointer), VersionValueLength) then
fInternalName := StrPas(VersionPointer);
// get legal copyright
if VerQueryValue(StringBuffer, PChar("\StringFileInfo\" + fCountryCode + "\" +
"LegalCopyright"), Pointer(VersionPointer), VersionValueLength) then
fLegalCopyright := StrPas(VersionPointer);
// get legal trademarks
if VerQueryValue(StringBuffer, PChar("\StringFileInfo\" + fCountryCode + "\" +
"LegalTradeMarks"), Pointer(VersionPointer), VersionValueLength) then
fLegalTradeMarks := StrPas(VersionPointer);
// get original filename
if VerQueryValue(StringBuffer, PChar("\StringFileInfo\" + fCountryCode + "\" +
"OriginalFilename"), Pointer(VersionPointer), VersionValueLength) then
fOriginalFilename := StrPas(VersionPointer);
// get product name
if VerQueryValue(StringBuffer, PChar("\StringFileInfo\" + fCountryCode + "\" +
"ProductName"), Pointer(VersionPointer), VersionValueLength) then
fProductName := StrPas(VersionPointer);
// get product version
if VerQueryValue(StringBuffer, PChar("\StringFileInfo\" + fCountryCode + "\" +
"ProductVersion"), Pointer(VersionPointer), VersionValueLength) then
fProductVersion := StrPas(VersionPointer);
// get comments
if VerQueryValue(StringBuffer, PChar("\StringFileInfo\" + fCountryCode + "\" +
"Comments"), Pointer(VersionPointer), VersionValueLength) then
fComments := StrPas(VersionPointer);
// free previously allocated memory
FreeMem(StringBuffer, Size);
end;
end;
По поводу проверки свежей версии, при запуске считываешь текущую версию и др. параметры если необходимо, потом проверяешь например каталог, где лежит новая версия, если это новая версия копируешь и запускаешь. Все это можно сделать например в bat-файле, написав соотв. приложенице в Delphi, кот. выполняет проверки.
← →
Shalamberidze (2003-06-30 09:44) [10]Ну вообщето версия и билд может хранится в ресурсе самой программы (опция Project/Options/Version Info)
← →
Anatoly Podgoretsky (2003-06-30 09:50) [11]-=alive=- © (29.06.03 21:36)
Решение вполне нормальное и очень простое, так часто поступают, а почитать надо про ReadLn, TextFile, AssignFile практически в любой книге есть или посмотреть примеры в справке.
Сожно конечно сделать клиент-серверную технологию, но для тебя будет очень тяжело.
← →
Anatoly Podgoretsky (2003-06-30 09:53) [12]Только лучше использовать в качестве идентификатора не версия и дату последней компиляции, а номер (build number), а остальную информацию, только как дополнительную, информациооную.
Но вместо простого текстового файла приваильнее и удобнее использовать ИНИ файл.
← →
-=alive=- (2003-06-30 12:01) [13]Всем спасибо , буду пробывать
Страницы: 1 вся ветка
Текущий архив: 2003.07.14;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.009 c