Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизСредствами Паскаль определить существует ли фаил. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c