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

Вниз

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

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

Наверх




Память: 0.49 MB
Время: 0.01 c
1-40370
delpher_gray
2003-10-01 13:32
2003.10.13
Загрузка строк неизвестного размера из TMemoryStream


1-40355
killer
2003-10-01 19:15
2003.10.13
Как вывести окно, а потом закрыть его без нажатия на кноку?


3-40250
alex-ran
2003-09-22 11:04
2003.10.13
Выборка из таблиц с разными алиасами


1-40374
Марат
2003-10-01 13:23
2003.10.13
Копирование таблицы


11-40325
Zelius
2003-01-30 17:54
2003.10.13
Как создать контрол в качестве Child а по парентовому хендлу?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский