Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.015 c
14-44874
realswat
2003-06-27 14:32
2003.07.14
как уведичить используемые ресурсы?


3-44549
Max_
2003-06-18 19:39
2003.07.14
Счётчик для TQuery.Last???


14-44838
McSimm
2003-06-26 11:31
2003.07.14
Клиент для форумов. Dolphin


7-44925
РАуль
2003-04-29 09:20
2003.07.14
Windows Messages


3-44598
ruslan_as
2003-06-21 11:13
2003.07.14
Структура базы InterBase