Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 13.10.2007, 19:00   #1
Fen1x
 
Регистрация: 30.09.2007
Сообщений: 8
По умолчанию Ошибка: "Access violation at address 00454F01 in module 'Project1.exe'. Read of address 00000000.

Вот код прогаммы:
Код:
.................................................
.................................................
z:TStrings;
................................................
.................................................
procedure TForm1.Button9Click(Sender: TObject);
var
i:integer;
begin
OpenDialog1.Options:=[ofHideReadOnly,ofAllowMultiSelect,ofEnableSizing];
if OpenDialog1.Execute then
  begin
  for i:=0 to OpenDialog1.Files.Count-1 do
  begin
    ListBox1.Items.Add('1. '+ExtractFileName(OpenDialog1.Files[i]));
    z.Add(OpenDialog1.Files[i]);// тут ошибка
  end;
  end;
end;
Ошибка говорит: "Access violation at address 00454F01 in module 'Project1.exe'. Read of address 00000000." Помогите пожалуйста, я уже измучился

PS
Не ругайтесь если спросил, что то глупое. Delphi изучаю всего месяц.
Fen1x вне форума
Старый 13.10.2007, 19:22   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Fen1x Посмотреть сообщение
Не ругайтесь если спросил, что то глупое. Delphi изучаю всего месяц.
У нас не ругаются, а помогают и объясняют.
Код:
var
  Form1: TForm1;
  z: TStrings;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
OpenDialog1.Options:=[ofHideReadOnly,ofAllowMultiSelect,ofEnableSizing];
if OpenDialog1.Execute then
  begin
  for i:=0 to OpenDialog1.Files.Count-1 do
  begin
    ListBox1.Items.Add('1. '+ExtractFileName(OpenDialog1.Files[i]));
    z.Add(OpenDialog1.Files[i]);// òóò îøèáêà
  end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
z:=TStringList.Create;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
z.Free;
end;

end.
Объявить Z - мало, нужно еще и создать. А чтобы не было "утечки" памяти, еще и уничтожить...
mihali4 вне форума
Старый 13.10.2007, 19:25   #3
Fen1x
 
Регистрация: 30.09.2007
Сообщений: 8
По умолчанию

Спасибо большое! Очень благодарен!
Fen1x вне форума
Старый 13.10.2007, 19:30   #4
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Внес небольшие изменения:
Код:
    ListBox1.Items.Add(inttostr(i+1)+'. '+ExtractFileName(OpenDialog1.Files[i]));
    z:=(OpenDialog1.Files);
Z - список. Ты добавляешь из OpenDialoga файлы списком, а не по одному. т.е. никаких [i] в добавлении не надо.
А создавать/уничтожать здесь по идее не надо.
Alex21 вне форума
Старый 13.10.2007, 19:39   #5
Fen1x
 
Регистрация: 30.09.2007
Сообщений: 8
По умолчанию

На счет intostr(i+1) я сам заметил уже, а вот за Z спасибо, а то я хотел уже писать о ошибке! Еще раз спасибо всем!
Fen1x вне форума
Старый 13.10.2007, 19:54   #6
Fen1x
 
Регистрация: 30.09.2007
Сообщений: 8
По умолчанию

Цитата:
z:=(OpenDialog1.Files);
Хе-хе не правильно чуть чуть... В этом случае каждый раз при открытие файлов, в Z пути к файлам будут записываться по новой. А мне надо, что бы добавлялись... Но в случае
Цитата:
z.Add(OpenDialog1.Files[i]);
вылазиет ошибка "Obstact error". Что делать???
Fen1x вне форума
Старый 13.10.2007, 20:06   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
А создавать/уничтожать здесь по идее не надо.
Нужно, сэ-э-р! Проведите эксперимент...
Цитата:
вылазиет ошибка "Obstact error". Что делать???
Изменил на
ListBox1.Items.Add(inttostr(i+1)+'. '+ExtractFileName(OpenDialog1.Files[i]));
Проверил у себя. Никакой ошибки по моему варианту.
mihali4 вне форума
Старый 13.10.2007, 20:09   #8
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

По теме -
http://delphibasics.ru/TOpenDialog.php

http://delphibasics.ru/TStringList.php
Alar вне форума
Старый 13.10.2007, 20:13   #9
Fen1x
 
Регистрация: 30.09.2007
Сообщений: 8
По умолчанию

Извиняюсь, я все исправил! Еще раз всем ответившим, огромный респект!
Fen1x вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Память не может быть "read" Alewteena Безопасность, Шифрование 3 27.08.2008 05:16
Address ошибки nimf Общие вопросы Delphi 1 30.04.2008 18:17
Access violation at address.. RegentM Общие вопросы Delphi 4 01.11.2007 03:46
Access Violation Carbon Общие вопросы Delphi 12 18.09.2007 19:55
Возникает исключение "Access violation at address ... Наташка Общие вопросы Delphi 1 18.05.2007 12:16