Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Средствами Паскаль определить существует ли фаил. [D5, D7, Win95/98, WinXP]


WebSQLNeeder ©   (2005-11-05 15:59:00) 

Простите за такой глупый вопрос, но вот никак не вспомню как определить существует ли фаил, который я пытаюсь загрузить в мемо.

Что странно даже такой код не работает :(

 DateTimeToString(st, 'd', Now()); // в st заносится сегодняшнее число
 fname:='C:/data/Adv/'+st+'.txt'; // имя файла в формате число.txt
 try
   Form2.Memo2.Lines.LoadFromFile(fname); // Пытаемся загрузить
 except
   showmessage('No file today, file name = '+fname); // Обрабатываем ошибку.
 end;

Что интересно так это то, что фаил fname с таким именем у меня вот перед глазами лежит ... Так в чем же дело тогда ??


аматор   (2005-11-05 20:59:00) [1]

Привет.
А ещё краше - запихни код в момент активации формы, тогда мемо точно создана будет...


WebSQLNeeder   (2005-11-05 18:35:00) [2]

Уже все решилось, но спасибо и за ваши варианты.

В онКриейт действительно вторая форма еще не проинициализирована, я сделал то же самое (загрузка в Мемо второй формы из файла) по нажатию кнопки "Загрузить параметры". Тогда все работает.

С TStrings - это да, я действительно поспешил с str.create; - просто искал быстрые пути подмены строк мемо и запутался в вызове обьекта строк.


Virgo_Style   (2005-11-05 16:53:00) [3]

А что нам скажет

...
except
 on E:Exception do Showmessage(E.Message);
end;

?


Zeqfreed   (2005-11-05 16:53:00) [4]

WebSQLNeeder ©   (05.11.05 16:40) [3]
Видимо на момент выполнения кода, Form2 ещё не создана, что, в общем-то, вероятнее всего.

WebSQLNeeder ©   (05.11.05 16:44) [4]
TStrings - абстрактный класс, его экземпляр нельзя создать, создать можно экземпляр TStringList и присвоить его переменной типа TStrings.


sniknik   (2005-11-05 16:49:00) [5]

главная форма создается первой.

в событии создания
procedure TForm1. FormCreate(Sender: TObject);
второй формы еще нет, поменяй событие на onShow к примеру, там уже все создастся.
либо загружай свой файл в событии создания второй формы. насколько вижу никаких причин делать это именно в первой нет.


@BraIN   (2005-11-05 16:47:00) [6]


> Хммм, странные вещи !!! Если заменить Form2.Memo2.Lines.
> LoadFromFile(fname); на любое Мемо, НО на главной форме,
>  например Memo1.Lines.LoadFromFile(fname); То все загружается
> ...


А ты уверен, что Form2 у тебя автоматически создается? Посмотри в опциях проекта..


> Та же ерунда происходит если обьявить переменную str:TStrings;
>  и потом попробовать str.Create;str.LoadFromFile(fname);
>


Что за синтаксис такой...str.create;?

var
 St: TStrings;
begin
 St := TStringList.Create;
 St.LoadFromFile(...);
 ...


WebSQLNeeder   (2005-11-05 16:44:00) [7]

Та же ерунда происходит если обьявить переменную str:TStrings; и потом попробовать str.Create;str.LoadFromFile(fname);

Выдается ошибка времени выполнения ...

Что это такое, почему нельзя загрузить в стринглист из файла?


WebSQLNeeder   (2005-11-05 16:40:00) [8]

Хммм, странные вещи !!! Если заменить Form2.Memo2.Lines.LoadFromFile(fname); на любое Мемо, НО на главной форме, например Memo1.Lines.LoadFromFile(fname); То все загружается ...

Что за глюк ???


WebSQLNeeder   (2005-11-05 16:37:00) [9]

Странно, но ошибка не исчезает. не могу понять, в чем дело ?? Привожу полностью процедуру, которая при старте формы загружает в мемо фаил, который имеет название сегодняшний_день.txt

procedure TForm1.FormCreate(Sender: TObject);
var fname,st:string;
begin
DateTimeToString(st, 'd', Now()); // в st заносится сегодняшнее число
fname:='C:/data/Adv/'+st+'.txt'; // имя файла в формате число.txt
if FileExists(fname) then
begin
 try
   Form2.Memo2.Lines.LoadFromFile(fname);
 except
   Showmessage('Ошибка загрузки файла');
 end;
end
else Showmessage('Фаил не существует');
end;


@BraIN   (2005-11-05 16:30:00) [10]

if FileExists('имя файла') then ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо