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

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

Ошибка


Sergey_Suhoy ©   (2002-11-26 17:40:00) 

Очень интересно... Вроде все правильно, но такая конструкция не работает (при выполнении нижеследующего кода возникает ошибка external exception). Прямо гвоздь в ботинке :-). Подскажите, кто знает, в чем я неправ?

//=========CUT============
procedure TForm1.YesBitBtnClick(Sender: TObject);
function FindTXTfiles: TStrings;
var TXTfile: TSearchRec;
TXTFileList: TStrings;
begin
TXTFileList := TStringList.Create;
if FindFirst("C:\*.txt", faAnyFile, TXTfile) = 0 then
begin
TXTFileList.Add("C:\" + TXTfile.Name);
while FindNext(TXTfile) = 0 do TXTFileList.Add("C:\" + TXTfile.Name);
end;
FindClose(TXTfile); Result := TXTFileList; TXTFileList.Free;
end;
begin
DebugMemo.Lines.Add("Обнаружены следующие TXT-файлы...");
DebugMemo.Lines.AddStrings(FindTXTfiles);
end;
//=========CUT============


mrcat   (2002-11-26 18:21:00) [1]

>>2tv
>>По моему тут дело все в TXTFileList: TStrings.

истина в ... процедуре


tv   (2002-11-26 18:18:00) [2]

По моему тут дело все в TXTFileList: TStrings.
Попробуй

function FindTXTfiles: TStringList;
var TXTfile: TSearchRec;
TXTFileList: TStringList;

ну и так далее...


mrcat   (2002-11-26 18:07:00) [3]

>>MBo
неважно, оптимизацией пусть сам занимается =)


MBo   (2002-11-26 18:05:00) [4]

>mrcat
Ну ты наворотил...

procedure FindTXTfiles(TXTFileList:TStrings);
var TXTfile: TSearchRec;
begin
if FindFirst("C:\*.txt", faAnyFile, TXTfile) = 0 then
begin
TXTFileList.Add("C:\" + TXTfile.Name);
while FindNext(TXTfile) = 0 do TXTFileList.Add("C:\" + TXTfile.Name);
FindClose(TXTfile);
end;
end;


mrcat   (2002-11-26 17:57:00) [5]

дык оно и не должно работать!!!
смотри:

procedure FindTXTfiles(const str: TStrings);
var
TXTfile: TSearchRec;
TXTFileList: TStrings;

begin
TXTFileList := TStringList.Create;
if FindFirst("C:\*.txt", faAnyFile, TXTfile) = 0 then begin
TXTFileList.Add("C:\" + TXTfile.Name);
while FindNext(TXTfile) = 0 do TXTFileList.Add("C:\" + TXTfile.Name);
end;
FindClose(TXTfile);
Str.AddStrings(TXTFileList);TXTFileList.Free;
end;

begin
DebugMemo.Lines .Add("Обнаружены следующие TXT-файлы...");
FindTXTfiles(DebugMemo.Lines);
end;


MBo   (2002-11-26 17:52:00) [6]

procedure FindTXTfiles(TXTFileList:TStrings);
...

FindTXTfiles(DebugMemo.Lines);


Smithson   (2002-11-26 17:50:00) [7]

А на какой конкретно строке возникает ошибка?
И что значит Result := TXTFileList;, у тебя же процедура? Код, похоже, не полный?


mike-d   (2002-11-26 17:50:00) [8]

Что-то ты тут со Strings намудрил...
Result := TXTFileList; // Result := указателю на объект
TXTFileList.Free; // тут ты его тихо прибил

DebugMemo.Lines.AddStrings(FindTXTfiles); // что теперь вставлять будем?


Наверх

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