Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Проблема с массивом


Автор: angelofdeath 21.6.2005, 13:35
Привет всем , у меня такая проблема , есть массив содержащий
стринговые переменные мне надо создать поролельно такой же массив
содержащие эти же элементы , только они должны быть integer – простым копирование и переводом (STRToInt)не получается пишет о несоответствии типов
подскажите плиз.

Код

var a:array of string;
      s:string;
begin 
  s:='10 20 30 40 50 60'; 
  Repeat // 
    setlength(a,length(a)+1); 
    if pos(' ',s)>0 then 
      begin 
        a[length(a)-1]:=copy(s,1, pos(' ',s)); 
        s:=copy(s,pos(' ',s)+1, length(s)); 
      end 
    else
      begin 
        a[length(a)-1]:=s; 
        break; 
      end; 
  Until False

Автор: Poseidon 21.6.2005, 14:01
Измени 9 строку на
Код
a[length(a)-1]:=copy(s,1, pos(' ',s)-1);


Тогда и
Код

var b: array of integer; i: integer;
...

for i:= 0 to length(a)-1 do
begin
setlength(b,length(b)+1);
b[i]:= StrToInt(a[i]);
end;
прокатит

Автор: Payne 21.6.2005, 14:16
Если массив со строками ты уже получил, то можешь использовать следующий код для создания "копии" массива:
Код

var
  i: integer;  //счетчик цикла
begin
  SetLength (int_ar, len); //int_ar - массив с числами, len - длина массива. Длины массивов совпадают
  for i := 0 to len-1 do //в динамических массивах элементы начинаются с нуля
  begin
    temp_str := str_ar[i]; //temp_str - переменная, куда помещается строка из массива str_ar
    temp_num := StrToInt (temp_str); //переменная, в которую записывается преобразованная в число строка
    int_ar[i] := temp_num; //присваиваем очередной ячейке массива числовое значение
  end;
end;

Вот и всё.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)