![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Шушпан |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите пожалуйста
Я пишу процедуру, которая осуществляет добавление элемента в массив при нажатии кнопки. Но при проверке работы выдается ошибка... в чем дело, понять не могу. Не подкажете? Код type words=array of string; procedure add_to_array(var base:words; rus:string); var k,i:integer; tmp:words; begin i:=length(base); tmp:=nil; setlength(tmp,i+1); for k:=1 to i do begin tmp[k]:=base[k]; end; tmp[i+1]:=rus; base:=nil; i:=i+1; setlength(base,i); base:=copy(tmp,0,i); end; procedure TForm1.baseframeaddbuttonClick(Sender: TObject); var i,k:integer; str,rus:string; base:words; begin rus:=baseframe.rusword.Text; i:=length(base); add_to_array(base,rus); end; plz |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ха-ха-ха... Я только что увидел:
У тебя Base имеет вот такую структуру: Цитата base[0]: [string1][string2][string3]...[stringN] base[1]: [string1][string2][string3]...[stringN] Тогда и изменять длину их надо вместе... Код procedure add_to_arr(var base:words; const rus,eng:string); var i: integer; begin i:=length(base[0]); i:=i+1; setlength(base[0], i); // увеличиваем длину первого массива setlength(base[1], i); // увеличиваем длину второго массива base[0][pred(i)]:=rus; // и работаем с ними base[1][pred(i)]:=eng; end; Или можно сделать по-другому (но тогда многое придется переделывать): Код type strRec = record rus, eng: string; end; var base: array of strRec; |
![]() ![]() |
![]() |
Текстовая версия | 24.07.2025 2:59 |