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

Вниз

Средствами Паскаль определить существует ли фаил.   Найти похожие ветки 

 
WebSQLNeeder ©   (2005-11-05 15:59) [0]

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

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

 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 с таким именем у меня вот перед глазами лежит ... Так в чем же дело тогда ??


 
@BraIN ©   (2005-11-05 16:30) [1]

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


 
WebSQLNeeder ©   (2005-11-05 16:37) [2]

Странно, но ошибка не исчезает. не могу понять, в чем дело ?? Привожу полностью процедуру, которая при старте формы загружает в мемо фаил, который имеет название сегодняшний_день.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;


 
WebSQLNeeder ©   (2005-11-05 16:40) [3]

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

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


 
WebSQLNeeder ©   (2005-11-05 16:44) [4]

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

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

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


 
@BraIN ©   (2005-11-05 16:47) [5]


> Хммм, странные вещи !!! Если заменить 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(...);
 ...


 
sniknik ©   (2005-11-05 16:49) [6]

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

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


 
Virgo_Style ©   (2005-11-05 16:53) [7]

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

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

?


 
Zeqfreed ©   (2005-11-05 16:53) [8]

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

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


 
WebSQLNeeder ©   (2005-11-05 18:35) [9]

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

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

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


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

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



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

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

Наверх




Память: 0.49 MB
Время: 0.047 c
14-1130065131
nk
2005-10-23 14:58
2005.11.20
Ищу фильм, но не уверен в правильности названия...


3-1129098845
tytus
2005-10-12 10:34
2005.11.20
Table is Full и как с этим бороться?


4-1119347185
Alex870
2005-06-21 13:46
2005.11.20
Закрытие процесса


2-1130962408
SpyBoy
2005-11-02 23:13
2005.11.20
Edit->Run


11-1111951017
DeimosX7
2005-03-27 23:16
2005.11.20
проблема с передачей параметров