Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.13;
Скачать: CL | DM;

Вниз

Как проверить существование файла.   Найти похожие ветки 

 
Alexandr Bratunets   (2003-09-30 08:43) [0]

Нужно проверить, есть файл с настройками или нет. Если его нет то он создается. Сейчас это работает так:


procedure TForm1.StartProgram(Sender: TObject);
begin
IniFileName := ExtractFileDir(ParamStr(0)) + "\test.ini";
IniFile := TIniFile.Create(IniFileName);
if(IniFile.SectionExists("General")) then ReadINIFile
else SaveINIFile
end;


 
Думкин ©   (2003-09-30 08:47) [1]

А зачем так?
Если настроечного файла с настройками нет еще - есть значения по умолчанию.


 
DimChan ©   (2003-09-30 08:54) [2]

А не проще настройки хранить/создавать в Реестре?


 
Verg ©   (2003-09-30 09:04) [3]


> procedure TForm1.StartProgram(Sender: TObject);
var ife : boolean;
> begin
> IniFileName := ExtractFileDir(ParamStr(0)) + "\test.ini";
ife:=FileExists(IniFileName);
> IniFile := TIniFile.Create(IniFileName);
> if ife then ReadINIFile
> else SaveINIFile
> end;



> Думкин © (30.09.03 08:47) [1]
> А зачем так?
> Если настроечного файла с настройками нет еще - есть значения
> по умолчанию.


Да, но файл-то так и не задастся.
Иногда надо бывает, чтобы прога создала INI файл со всеми нужными разделами и значениями именно по умолчанию, если этого INI не было.


 
Кулюкин Олег ©   (2003-09-30 09:08) [4]

> Нужно проверить, есть файл с настройками или нет
Если надо проверить существование файла:

function FileExists(const FileName: string): Boolean;

Description

FileExists returns True if the file specified by FileName exists. If the file does not exist, FileExists returns False.


 
ads   (2003-09-30 09:10) [5]

By the way:
FileExists(*.*) - вернет TRUE...
- это отвратительно....


 
Palladin ©   (2003-09-30 09:16) [6]


> ads (30.09.03 09:10) [5]

почему?


 
Verg ©   (2003-09-30 09:22) [7]


> ads (30.09.03 09:10) [5]
> By the way:
> FileExists(*.*) - вернет TRUE...
> - это отвратительно....


Del *.* - сработает, что тоже гадко.


 
Verg ©   (2003-09-30 09:42) [8]

Кстати, если уж говорить о приколах FileExists, то стоит отметить лишь одно - файлы с датой ранее 1980 года для нее не существуют.


 
ads   (2003-09-30 09:56) [9]

> Palladin
потому что пользователь в строке ввода может все что угодно написать...
и мне придется синтаксис проверять...
а FileExists - (как следует из названия) - должна проверять существует ли ФАЙЛ. Один. блин.


 
ads   (2003-09-30 10:01) [10]

> Verg
Del - задокументированная функция обработчика пользовательского ввода, поддерживающая маски файлов....
FileExists - функция библиотеки - с красивым названием но глупой реализацией...
Вот помню в Delphi 1 - была реализованна через FileAge()
...


 
Palladin ©   (2003-09-30 10:01) [11]


> ads (30.09.03 09:56) [9]

ты знаешь... есть такая функция pos...
думаю ты не умрешь если напишешь подобное
if (pos("*",edit1.text)<>0) or (pos("?",edit1.text)<>0) then ShowMessage("Недопустимые символы в имени файла");


 
Verg ©   (2003-09-30 10:05) [12]


> Вот помню в Delphi 1 - была реализованна через FileAge()


... и до сих пор.


> потому что пользователь в строке ввода может все что угодно
> написать...
> и мне придется синтаксис проверять...


Вот вот. Одни, блин, голову ломают как сделать так, чтобы пользователь именно все что угодно написать мог, а другие наоборот....


 
ads   (2003-09-30 10:05) [13]

Правда сама FileAge оставляет желать лучшего ...


 
ads   (2003-09-30 10:22) [14]

> Palladin
Pos - это конечно прекрасно. Тем и радует программирование что всегда можно найти обходной путь...
Можно было бы и функцию FileExists самому написать...
Может я просто много жду от RTL ? Самодокументрованые названия функций, комментарии в документации по Delphi ...
> Verg
не надо путать ввод имени файла в поле ввода и
написание script-a пользователем...


 
panov ©   (2003-09-30 10:24) [15]

Всегда пользовался таким методом и не было проблем:

1. TIniFile.Create;
2. Myparm := ReadString(..,..,"");
3. if MyParm="" then
begin
MyParm=MyString;
WriteString(..,..,MyParm);
end;


Если фала нет, он создается.
Если параметр не задан, то он записывается в файл со значением по умолчанию.


 
Anatoly Podgoretsky ©   (2003-09-30 10:34) [16]

У тебя написано правильно, для ИНИ файлов проверять наличие нет нужды.


 
BlackKing   (2003-09-30 11:59) [17]

Pri otkritii programmi popitajsja schitat" nuzhnije znachenija, jesli fajl ne sozdan, podstavjaca znachenija po umolchaniju. A potom ili pri vihode iz programmi ili srazu posle chtenija ili jesho kogda, sohrani eti vse znachenija, fajl sam sozdasca, jesli jesho ne sozdan.


 
han_malign ©   (2003-09-30 12:45) [18]

>panov © (30.09.03 10:24) [15]
>Если фала нет, он создается.
- если не забывать про TIniFile.UpdateFile...


 
panov ©   (2003-09-30 13:36) [19]

>han_malign © (30.09.03 12:45) [18]
Достаточно TIniFile.Free;


 
Rem ©   (2003-09-30 14:01) [20]

function FileExistsEx(a_sFileName: string): boolean;
var
f: file;
begin
AssignFile(f, a_sFileName);
FileMode := fmOpenRead;
{$I-}
Reset(f);
CloseFile(f);
{$I+}
Result := (IOResult = 0) and (a_sFileName <> "");
end;


 
Black King   (2003-09-30 22:37) [21]

Jest" jesho
function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;
iz SysUtils :o)



Страницы: 1 вся ветка

Текущий архив: 2003.10.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
3-40265
ViKS
2003-09-22 16:37
2003.10.13
Экспорт данных в Excel


1-40408
Falt
2003-09-30 22:14
2003.10.13
Промежутки


4-40719
Alexander
2003-08-05 08:31
2003.10.13
Изменяю в реестре значение, например для HKCR TXTFile DefaultIcon


6-40548
malamba
2003-08-15 10:45
2003.10.13
проверка ссылок на странице


14-40629
Jeer
2003-09-24 16:12
2003.10.13
Что нужно делать