hallo,
ich hab hier nen (nicht optimierten) code, der ein array kriegt das ordnen soll und zum schluss es zurückgeben soll.
Aber ich hab unkompatible Typen, aber warum?
Hier meckert der Compiler:
SetLength(MyProgs, SizeOf(HlpArray));
Hier die ganze Prozedur:
Delphi-Quellcode:
procedure ArrangeList(var MyProgs: array of TProgs);
var
i, j: Integer;
StrList: TStringList;
HlpArray: array of TProgs;
MyBreak: Boolean;
begin
StrList := TStringList.Create;
for i := Low(MyProgs) to High(MyProgs) do
begin
if (MyProgs[i].Name <> '') then
StrList.Add(MyProgs[i].Name);
end;
StrList.Sorted := True;
SetLength(HlpArray, StrList.Count);
for i := Low(HlpArray) to High(HlpArray) do
begin
HlpArray[i].Name := StrList.Strings[i];
end;
StrList.Free;
MyBreak := False;
for i := Low(HlpArray) to High(HlpArray) do
begin
for j := Low(MyProgs) to High(MyProgs) do
begin
if (HlpArray[i].Name = MyProgs[j].Name) then
begin
HlpArray[i].Path := MyProgs[j].Path;
MyBreak := True;
end;
end;
end;
SetLength(MyProgs, SizeOf(HlpArray)); // [Fehler] UStdFunc.pas(66): Inkompatible Typen
for i := Low(MyProgs) to High(MyProgs) do
begin
MyProgs[i].Name := HlpArray[i].Name;
MyProgs[i].Path := HlpArray[i].Name;
end;
SetLength(HlpArray, 0);
end;