![]() |
Inkompatible Typen: 'Array' und 'dynamic array'
Hallo!
Ich habe ein Problem in folgender Prozedur:
Delphi-Quellcode:
Und zwar bekomme ich folgende Fehler:
procedure shuffle(quelle: array of string; var ziel: array of string);
var temp: array of string; i: integer; zufall: integer; begin SetLength(temp, length(quelle)); SetLength(ziel, length(quelle)); for i := 0 to high(quelle) do begin zufall := RandomRange(0, high(quelle) - i); temp[i] := quelle[zufall]; quelle[zufall] := quelle[high(quelle) - i]; end; ziel := Copy(temp); end; [Fehler] uMain.pas(294): Inkompatible Typen [Fehler] uMain.pas(301): Inkompatible Typen: 'Array' und 'dynamic array' Die Prozedur soll das array quelle in zufälliger Reihenfolge in ziel speichern. kann mir einer sagen wo der Fehler liegt? EDIT: Zeile 294 ist "SetLength(ziel, length(quelle));" und Zeile 301 ist "ziel := Copy(temp);" Ich habe auch 2 dynamische Arrays an die Prozedur übergeben. |
Re: Inkompatible Typen: 'Array' und 'dynamic array'
der Fehler dürfte nicht mehr kommen wenn du anstelle von "array of String" einen Typen übergibst den du vorher definiert hast oder TStringDynArray
|
Re: Inkompatible Typen: 'Array' und 'dynamic array'
Ich habe vorher ja auch array of string definiert:
MyArray : array of string; MyArray2 : array of string; Aber wenn ich die beiden übergebe kommen eben diese Fehler. |
Re: Inkompatible Typen: 'Array' und 'dynamic array'
Ok, wenn ich TStringDynArray nehme verschwindet der erste Fehler. Der zweite bei Copy bleibt jedoch. :gruebel:
|
Re: Inkompatible Typen: 'Array' und 'dynamic array'
Hai,
hast Du ach alle Variablen mit diesem Typ deklariert? Z.B.:
Delphi-Quellcode:
type
TArrayOfString = array of string; procedure shuffle(quelle: TArrayOfString; var ziel: TArrayOfString); var temp: TArrayOfString; i: integer; zufall: integer; begin SetLength(temp, length(quelle)); SetLength(ziel, length(quelle)); . . |
Re: Inkompatible Typen: 'Array' und 'dynamic array'
Hi,
Zitat:
Delphi-Quellcode:
Grüße vom marabu
procedure Shuffle(var dsa: array of string);
var i, iRandom: integer; s: string; begin for i := 1 to High(dsa) do begin iRandom := Random(i); s := dsa[Pred(i)]; dsa[Pred(i)] := dsa[iRandom]; dsa[iRandom] := s; end; end; |
Re: Inkompatible Typen: 'Array' und 'dynamic array'
@sharky, das wars danke...
@marabu, wofür ist denn Pred()? |
Re: Inkompatible Typen: 'Array' und 'dynamic array'
Pred(i) ist die feine Art, i - 1 zu schreiben. ;)
Das Gegenteil davon ist Succ(). Predecessor = Vorgänger, successor = Nachfolger. |
Re: Inkompatible Typen: 'Array' und 'dynamic array'
Ahso, also eigentlich das gleiche wie Inc und Dec?
|
Re: Inkompatible Typen: 'Array' und 'dynamic array'
Wenn du es so formulierst - nein. Inc() und Dec() sind Prozeduren, Pred() und Succ() sind Funktionen.
Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz