Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];

Вниз

Работа с текстовым файлом   Найти похожие ветки 

 
-=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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
1-44708
FlyDragon
2003-06-30 17:53
2003.07.14
Двигать программно.


1-44724
Алесей
2003-07-01 10:07
2003.07.14
Работа с Rave


1-44722
Переяслов Григорий
2003-07-01 09:33
2003.07.14
Изменение контекста Help-а


1-44683
Dimchik_666
2003-06-30 17:22
2003.07.14
Как открыть программу?


14-44877
Sedunov Vitaly
2003-06-27 12:11
2003.07.14
Quantum Grid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский