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

Вниз

Чё за батва ( :) ) с динамическими массивами?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
14-35051
Godness
2003-05-21 22:12
2003.06.12
вопрос к спецам по портами ! ...


1-34924
Lazy girl
2003-05-31 09:01
2003.06.12
Пропали системные кнопки MDI-child!!!!!!!!!!!!!!!!!


8-34941
~Mr.L@g~
2003-02-26 15:13
2003.06.12
Дисплей компонента TMediaPlayer


3-34685
DBDev
2003-05-22 16:08
2003.06.12
ПОМОГИТЕ! Хранимая процедура возвращает VARCHAR(255)


14-35039
Makhanev A.S.
2003-05-27 16:14
2003.06.12
Delphi6 update pack2 & Windows 2000