![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамический массив [D7, XP]
leshka © (2013-09-10 14:35:00)ПриВЕт!
Есть код
procedure TfmBak.FormCreate(Sender: TObject);
var n:Integer;
short_name_diagnos: array of string[30];
begin
fmVsp:=TfmVsp.Create(Application);
fmVsp.mmo2.Lines.LoadFromFile('Analiz\Short_diagnost.dat');
SetLength(short_name_diagnos,fmVsp.mmo2.Lines.Count-1);
for n:=0 to fmVsp.mmo2.Lines.Count-1 do
begin
short_name_diagnos[n]:=fmVsp.mmo2.Lines[n];
end;
выдает ошибку при запуске "Access violation at ..."
подскажите что не так
Спасибо!
[ВладОшин] (2013-09-11 11:31:00) [1]
> leshka
Юзайте отладку, пригодится
если надо сдать и забыть
на вскидку:
procedure TfmBak.FormCreate(Sender: TObject);
short_name_diagnos: array of string[30];
попробуйте отсюда вынести массив в форму
type
TForm1 = class(TForm)
public
{ Public declarations }
short_name_diagnos: array of string[30];
end;
sniknik (2013-09-11 11:28:00) [2]это не связано с массивами, не нужно по единственно найденному/прочтенному случаю делать глобальные выводы.
это любая ошибка, твоя/твоей программы, произошедшая либо до инициализации ексептов (в SysUtils) либо после из "разинициализации".
"там"/прочитанном тобой случае причина в них. у тебя... в 17й строке.
> В 17-й строке написано
17я строка это мем, значит любую строку видимую тобой, но не видимую отвечающим.
> Что тут может быть не так!!!???
вообще, много чего, от контекста зависит. ну например (1 из кучи вариантов) это прописано у тебя в рекорде/модуле глобальной переменной, создается от формы, освобождается в finallize своего модуля когда формы уже нет, после финализации SysUtils. вуаля - runtime error 217
stas (2013-09-11 11:26:00) [3]
procedure TfmBak.FormCreate(Sender: TObject);
var n:Integer;
List:TStringList; //short_name_diagnos: array of string[30];
begin
...
List:=TStringList.Create(); //создаем экземпляр класса
try
List.LoadFromFile (GetFilePath(ParamStr(0))+'Analiz\Short_diagnost.dat'); // загружаем файл по пути, GetFilePath(ParamStr(0)) - определяем путь к программе
{
обратится к строке в List - List[i], где i порядковый номер строки
}
finally
List.free // освобождаем память
end;
end;
как-то так
stas (2013-09-11 11:15:00) [4]leshka (11.09.13 11:03) [6]
надо еще и вычистить память после того как заняли динамическим массивом.
Лучше использовать готовые объекты для этих целей, TStringList например.
А по поводу 17-й строки, так говорят, когда кода полностью не видели. Как можно дать ответ не зная что вы там написали.
stas (2013-09-11 11:10:00) [5]leshka (11.09.13 11:03) [6]
...убил )
leshka (2013-09-11 11:03:00) [6]В 17-й строке написано
Label1: TLabel;
Что тут может быть не так!!!???
Плохиш (2013-09-11 10:47:00) [7]Ошибка в 17й строке.
PS. Вот интересно, нафига разработчики среды время на создание отладчика тратили? Всё-равно уборщицы им не пользуются.
leshka (2013-09-11 10:02:00) [8]Парни, возникла еще небольшая проблемка:
При завершении работы программы вылезает ошибка runtime error 217 at 00402700
почитал в инете что это связано с динамическими массивами, но что именно я не понял. Подскажите пожалуйста
brother (2013-09-11 03:44:00) [9]медики... им можно... )
Sha (2013-09-10 20:11:00) [10]Загрузка текстового файла в массив строк через TMemo на вспомогательной форме )
Круть !
Сергей М. (2013-09-10 15:28:00) [11]SetLength(short_name_diagnos,fmVsp.mmo2.Lines.Count -1); // как минимум вот это не так