Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка с TStrings 
:(
    Опции темы
Stalker Ghost
  Дата 20.11.2004, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 11.11.2004
Где: между столом и ст улом

Репутация: нет
Всего: 2



Мне в программе нужно добавлять имена файлов FI.FileName в ListBox (lbList) и запоминать их путь и имя в FI.FilePath для последуюсчей работы. Но проблема в строках с знаком вопроса, потому что при компиляции , когда добавляю файлы мне выдаёт EAccessViolation. Что может быть неправильно??

odAddFile : OpenDialog,
FI.FilePath= в хинте Code Editor говорит что он в начале nil, никаких обрасчений к нему в проге нету кроме как в коде снизу

Код

implementation

type

 TFilePath=record
   FileName : string;
   FilePath : TStrings;
  end;

var     FI : TFilePath;


...

procedure TfrmMain.AddFileClick(Sender: TObject);
var     i : integer;
//FileName : string;
begin
 if odAddFile.Execute then
   for i:=0 to odAddFile.Files.Count-1 do
    begin
     //????   FI.FilePath.Append(odAddFile.Files.strings[i]);
     //??? FI.FilePath.Add(odAddFile.Files.strings[i]);
     FI.FileName:=ExtractFileName(odAddFile.Files.strings[i]);
     Delete(FI.FileName,length(FI.FileName)-3,4);//удаление расширения
     lbList.Items.Add(FI.FileName);
    end;
end;


Хелп ми, пипл!!
PM MAIL MSN   Вверх
Alex
Дата 20.11.2004, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Код


implementation

type

TFilePath=record
  FileName : string;
  FilePath : TStringList;
 end;

var     FI : TFilePath;


...

procedure TfrmMain.AddFileClick(Sender: TObject);
var     i : integer;
//FileName : string;
begin
if odAddFile.Execute then
  for i:=0 to odAddFile.Files.Count-1 do
   begin
    //????   FI.FilePath.Append(odAddFile.Files.strings[i]);
    //??? FI.FilePath.Add(odAddFile.Files.strings[i]);
    FI.FileName:=ExtractFileName(odAddFile.Files.strings[i]);
    Delete(FI.FileName,length(FI.FileName)-3,4);//удаление расширения
    lbList.Items.Add(FI.FileName);
   end;
end;
...
initialization
 FI.FilePath:= TStringList.Create;

finalization
 if Assigned(Tests) then FI.FilePath.Free;

Добавлено @ 21:40
Объекты нужно создавать, перед тем как с ним работать и не забывать уничтожать.
TStrings это абстрактный класс, поэтому нужно использовать TStringList.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Stalker Ghost
Дата 20.11.2004, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 11.11.2004
Где: между столом и ст улом

Репутация: нет
Всего: 2



Ааааа, теперь понял, smile . Я просто не создал TStrings:
Надо было делать так:

Код

implementation

type

TFilePath=record
 FileName : string;
 FilePath : TStringList;
end;

var     FI : TFilePath;
....

procedure TfrmMain.FormCreate(Sender: TObject);
begin

 FI.FilePath:= TStrings.Create;

end;

...

procedure TfrmMain.AddFileClick(Sender: TObject);
var     i : integer;
//FileName : string;
begin
if odAddFile.Execute then
 for i:=0 to odAddFile.Files.Count-1 do
  begin
   //????   FI.FilePath.Append(odAddFile.Files.strings[i]);
   //??? FI.FilePath.Add(odAddFile.Files.strings[i]);
   FI.FileName:=ExtractFileName(odAddFile.Files.strings[i]);
   Delete(FI.FileName,length(FI.FileName)-3,4);//удаление расширения
   lbList.Items.Add(FI.FileName);
  end;
end;


Век живи, век учись, а програмистом профи фиг станешь smile

Большое спасибо!!!!¡¡¡¡¡
PM MAIL MSN   Вверх
Alex
Дата 20.11.2004, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



не за что


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.