Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Inkompatible Typen: 'Array' und 'dynamic array' (https://www.delphipraxis.net/52783-inkompatible-typen-array-und-dynamic-array.html)

soulflare 3. Sep 2005 16:34


Inkompatible Typen: 'Array' und 'dynamic array'
 
Hallo!

Ich habe ein Problem in folgender Prozedur:

Delphi-Quellcode:
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;
Und zwar bekomme ich folgende Fehler:

[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.

SirThornberry 3. Sep 2005 17:01

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

soulflare 3. Sep 2005 17:04

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.

soulflare 3. Sep 2005 17:08

Re: Inkompatible Typen: 'Array' und 'dynamic array'
 
Ok, wenn ich TStringDynArray nehme verschwindet der erste Fehler. Der zweite bei Copy bleibt jedoch. :gruebel:

Sharky 3. Sep 2005 17:11

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));
.
.

marabu 3. Sep 2005 17:17

Re: Inkompatible Typen: 'Array' und 'dynamic array'
 
Hi,

Zitat:

Zitat von Borland
function Copy(S; Index, Count: Integer): array;

Ich verwende das hier:

Delphi-Quellcode:
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;
Grüße vom marabu

soulflare 3. Sep 2005 17:44

Re: Inkompatible Typen: 'Array' und 'dynamic array'
 
@sharky, das wars danke...

@marabu, wofür ist denn Pred()?

SMO 3. Sep 2005 18:10

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.

soulflare 3. Sep 2005 20:40

Re: Inkompatible Typen: 'Array' und 'dynamic array'
 
Ahso, also eigentlich das gleiche wie Inc und Dec?

marabu 3. Sep 2005 20:49

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