Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array an Funktion übergeben: Problem! (https://www.delphipraxis.net/90826-array-funktion-uebergeben-problem.html)

silentAMD 24. Apr 2007 13:53


Array an Funktion übergeben: Problem!
 
hi,
ich übergebe an eine funktion wie folgt ein dynamisches array vom typ TZeichenkette:

Code:
procedure AnzahlBuchstabenkette(txt: String; var arr: array of TZeichenkette; zahl, maximal: Byte);
begin
SetLength(arr, 0);

//... weiterer Code...

end;
beim versuch, dies zu compilern kommt folgender fehler: "E2008 Inkompatible Typen" in jeder zeile wo setlength steht.


was ist denn verkehrt?

matashen 24. Apr 2007 14:08

Re: Array an Funktion übergeben: Problem!
 
Ich denke das liegt an deinenm TZeichenkette, zeig mal den Codeschnipsel wo du dieses deklarierst, da liegt vermutlich der Hund begraben :lol:

Gruß Matthias

silentAMD 24. Apr 2007 14:10

Re: Array an Funktion übergeben: Problem!
 
daran dürfte es nicht liegen, denn wenn ich gleich den namen der globelen variable statt der übergebenen eingebe klappt es... aber bitte:

Code:
TZeichenkette = class(TObject)
  Signs: String;
  Anzahl: Integer;
private
  { Private-Deklarationen }
public
  { Public-Deklarationen }
end;

bittte helfen!!!

EDIT: hab ne lösung gefunden... array of TZeichenkette als typ deklarieren... aber wieso läuft meine ursprüngliche lösung nicht?

Apollonius 24. Apr 2007 17:15

Re: Array an Funktion übergeben: Problem!
 
Schau mal in der Hilfe unter Parameter. Die Konstruktion, die du verwendet hast, ist ein "offener Array-Parameter", und damit gehen gewisse Dinge nunmal nicht.

inherited 24. Apr 2007 19:04

Re: Array an Funktion übergeben: Problem!
 
Du musst dir erst einen Typ definieren, der nicht als offen missverstanden werden kann
Delphi-Quellcode:
  TZeichenkettenArray=Array of TZeichenkette;
und dann diesen Typ nehmen.

Muetze1 24. Apr 2007 23:25

Re: Array an Funktion übergeben: Problem!
 
Und damit man sich diese Unart der dynamischen Arrays an unsinnigen Stellen erst gar nicht angewöhnt: hier wäre eine TObjectList viel besser geeignet (und man braucht nicht mal var, es reicht sogar ein const)...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz