Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.07.13;
Скачать: CL | DM;

Вниз

Динамический массив   Найти похожие ветки 

 
leshka   (2013-09-10 14:35) [0]

ПриВЕт!
Есть код


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-10 15:28) [1]

SetLength(short_name_diagnos,fmVsp.mmo2.Lines.Count-1); // как минимум вот это не так


 
Sha ©   (2013-09-10 20:11) [2]

Загрузка текстового файла в массив строк через TMemo на вспомогательной форме )
Круть !


 
brother ©   (2013-09-11 03:44) [3]

медики... им можно... )


 
leshka   (2013-09-11 10:02) [4]

Парни, возникла еще небольшая проблемка:
При завершении работы программы вылезает ошибка runtime error 217 at 00402700
почитал в инете что это связано с динамическими массивами, но что именно я не понял. Подскажите пожалуйста


 
Плохиш ©   (2013-09-11 10:47) [5]

Ошибка в 17й строке.

PS. Вот интересно, нафига разработчики среды время на создание отладчика тратили? Всё-равно уборщицы им не пользуются.


 
leshka   (2013-09-11 11:03) [6]

В 17-й строке написано Label1: TLabel;
Что тут может быть не так!!!???


 
stas ©   (2013-09-11 11:10) [7]

leshka   (11.09.13 11:03) [6]

...убил )


 
stas ©   (2013-09-11 11:15) [8]

leshka   (11.09.13 11:03) [6]
надо еще и вычистить память после того как заняли динамическим массивом.
Лучше использовать готовые объекты для этих целей, TStringList например.

А по поводу 17-й строки, так говорят, когда кода полностью не видели. Как можно дать ответ не зная что вы там написали.


 
stas ©   (2013-09-11 11:26) [9]

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;


как-то так


 
sniknik ©   (2013-09-11 11:28) [10]

это не связано с массивами, не нужно по единственно найденному/прочтенному случаю делать глобальные выводы.

это любая ошибка, твоя/твоей программы, произошедшая либо до инициализации ексептов (в SysUtils) либо после из "разинициализации".

"там"/прочитанном тобой случае причина в них. у тебя... в 17й строке.

> В 17-й строке написано
17я строка это мем, значит любую строку видимую тобой, но не видимую отвечающим.

> Что тут может быть не так!!!???
вообще, много чего, от контекста зависит. ну например (1 из кучи вариантов) это прописано у тебя в рекорде/модуле глобальной переменной, создается от формы, освобождается в finallize своего модуля когда формы уже нет, после финализации SysUtils. вуаля - runtime error 217


 
[ВладОшин] ©   (2013-09-11 11:31) [11]


> 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;



Страницы: 1 вся ветка

Текущий архив: 2014.07.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.005 c
1-1326368245
Mister_X
2012-01-12 15:37
2014.07.13
IdMessage, Indy 10


2-1379248188
cr@nk
2013-09-15 16:29
2014.07.13
Аварийный выход из программы


3-1299921801
ddd329
2011-03-12 12:23
2014.07.13
SQL запрос от ClientDataSet


15-1387830602
Юрий
2013-12-24 00:30
2014.07.13
С днем рождения ! 24 декабря 2013 вторник


15-1387657802
Юрий
2013-12-22 00:30
2014.07.13
С днем рождения ! 22 декабря 2013 воскресенье