|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Знаю, туплю, но всеже...(про массив)
...надо удалить из памяти массив(динамический)... очень надо... пробывал втупую писать SetLength(Massiv,0), но он выдает ошибку...
PS: Massiv: array of string; перед удалением минимум 1 элемент есть. |
#2
|
||||
|
||||
дополнение
Слегка изменю суть вопроса: прога шифрует текст, перед шифрованием в глобальный массив помещает текс из Мемо1, после шифрования помещает результат(зашифрованный массив) в Мемо2. В итоге у меня остается ненужный массив, однако программа работает и ошибок нету.
Но когда я пытаюсь сделать следущую операцию(например, зашифровать полученный шифр), и по-новой выполняю эту операцию, то как только программа доходит(при трассировке) до строки "SetLength(Massiv, 0);" мне выпадает окно об ошибке и процедура заканчивается ничего несделав. при этом нажав на кнопку ок в окне ошибки и еще раз попытавшись зашифровать текст все работает... вообщем работает через-раз... Сама процедура выглядит примерно так: Код:
... var MainFrm: TMainFrm; Massiv: array of string; ... procedure Crypt(var Sender: TObject); ... SetLength(Massiv,0); For i1 := 0 to Memo1.Lines.Count-1 do begin SetLength(Massiv, length(Massiv)+1); Massiv[i1] := Memo1.Lines.Strings[i1]; end; ... {Здесь выполняется процедура кодирования из библиотеки} {загруженной методом:} {WhereDLL := LoadLibrary(PChar('AdresDLL'));} {if WhereDll <> 0 Then} {...} {FreeLibrary(WhereDLL);} ... end; |
#3
|
|||
|
|||
В приведенном фрагменте кода я криминала не увидел. Где еще Massiv используется? Проверь, чтоб к нему не было обращений из других потоков.
И какая конкретно ошибка? |
#4
|
||||
|
||||
действительно ступил
Все разобрался в чем проблема была... надо было просто перед тем как библиотеку выгружать обнулить массив, а то он после выгрузки оставался тойже длинны, но с пустыми значениями. А когда процедуру выполнять 2й раз, то он давал ошибку, при этом массив становился нулевым, и в следующий раз уже все нормально выполнялось... вообщем объяснить немогу, но заработало!!!
|