![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Средствами Паскаль определить существует ли фаил. [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 ...