Форум: "Основная";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];
ВнизЧё за батва ( :) ) с динамическими массивами? Найти похожие ветки
← →
BlackTiger (2003-06-02 19:03) [0]"Стою на асфальте, в лыжи обутый..." (вступление).
Имею массив array of string:
var
va : array of string;
l : integer;
begin
// ...
l := 30;
SetLength(va, l); // <- ERROR тута : Imcompatible types
//...
end;
говорит, что переменная "l" не того типа. Раньше все компилировалось, и вдруг - не тот тип. Где что слетело, интересно? Такое впечатление, что он берет совсем другой SetLength(), а не System.SetLength(var S; NewLength: Integer). И почему раньше все ему нравилось, а теперь - нет?
← →
Serginio (2003-06-02 19:09) [1]Может день сегодня какой то особый. А на какую процедуру показывает ???
← →
Serginio (2003-06-02 19:10) [2]Для интереса попробуй
System.SetLength(va, l); //
← →
BlackTiger (2003-06-02 19:13) [3]Опс!
Уточняю, вот мой реальный код (ногами не бить! код довольно старый и всегда работал):
procedure SplitString(const S: string; const Delim: string;
var StrArr: array of string);
var
i,j,l: integer;
ch,s1 : string;
//va : array of string
begin
l := 1;
for i := 1 to StrLen(PChar(S)) do begin
if S[i] = Delim then Inc(l);
end;
SetLength(StrArr,l); // ругается тут
//SetLength(va,l);
s1 := ""; j := 0;
for i := 1 to StrLen(PChar(S)) do begin
if S[i] = Delim then begin
StrArr[j] := s1;
Inc(j); s1 := "";
end else
s1 := s1 + S[i]
;
end;
//StrArr := Copy(va);
//StrArr := va;
end;
Почему-то раньше Дельфе все нравилось. Если убрать комменты, то говорит, что несовместимые типы Array и dynamic array.
← →
Serginio (2003-06-02 19:17) [4]Сделай тип TStringArray=array of string; и работай с ними.
← →
BlackTiger (2003-06-02 19:22) [5]//Сделай тип TStringArray=array of string; и работай с ними.
Работает...
Это конечно хорошо, но ПОЧЕМУ ВСЕГДА ВСЕ РАБОТАЛО?!?!?
← →
Serginio (2003-06-02 19:24) [6]А System.SetLength(va, l); тоже не работает????
← →
VMcL (2003-06-02 19:44) [7]>BlackTiger (02.06.03 19:13)
>procedure SplitString(const S: string; const Delim: string;
> var StrArr: array of string);
В данном случае "StrArr" - это не динамический массив, а "open array parameter", и устанавливать ему длину низзя.
Попробуй так:
type
TMyArr = array of string;
// ...
procedure SplitString(const S: string; const Delim: string;
var StrArr: TMyArr);
← →
Song (2003-06-02 19:45) [8]Type MyMas: array of String;
...
procedure SplitString(const S: string; const Delim: string;
var StrArr: MyMas);
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c