![]() |
Werte an Array übergeben?
hi,
wie kann ich sowas wie das hier hinbekommen:
Delphi-Quellcode:
wie das bei CONST geht weiss ich, ich brauch es aber innerhalb des codes, mein array soll 20 pointer halten, wie mache ich das ohne unentwegt:
MeinArray := (@Irgendwas^.Item1, @Irgendwas^.Item2, @Irgendwas^.Item3);
MeinArray[0] := @Irgendwas^.Item1 MeinArray[1] := @Irgendwas^.Item1 usw... schreiben zu müssen? |
Re: Werte an Array übergeben?
w00t???
najo, ich denk mal du meinst das:
Delphi-Quellcode:
wenn es das net ist, sry, abba ich versteh sonst net, was genau du meinst :(
Setlength(meinarray, 3);
meinarray[0]:=1; meinarray[1]:=2; meinarray[2]:=3; mfg GimbaR |
Re: Werte an Array übergeben?
hi,
das ist genau DAS was ich NICHT möchte :(. ich möchte mehrere werte DIREKT an ein array übergeben, in C geht das ganz easy... sagen wir mal ich möchte 50 werte an mein array übergeben, dann bräuchte ich 50 deiner zeilen.... ich möchte aber sowas wie das haben:
Delphi-Quellcode:
ohne:
EinArray := ('wert1', 'wert2', 'wert3',...'wert49', 'wert50);
Delphi-Quellcode:
schreiben zu müssen...
EinArray[0] := 'wert1';
EinArray[1] := 'wert0' EinArray[2] := 'wert2' EinArray[3] := 'wert3' EinArray[4] := 'wert4' EinArray[5] := 'wert5' achja...wer jetzt an eine schleife denkt - wird kaum gehen, da ich keine strings verwende sondern pointer auf variablen.. |
Re: Werte an Array übergeben?
kann man denn nich dein array als Array of Pointer deklarieren?
dann würde dass gehen, oder sehe ich das falsch? mfg GimbaR |
Re: Werte an Array übergeben?
es ist ja ein array of pointer:
Delphi-Quellcode:
PUserArray: array[0..19] of Pointer;
sag mir nurnoch wie ich ihm alle pointer übergebe und nicht alle einzelnd :mrgreen: |
Re: Werte an Array übergeben?
Ich hab das selbe Problem, und es schon mit allen möglichen Schreibweisen probiert, aber nichts gefunden.
Was er/ich meine ist statt:
Delphi-Quellcode:
sowas ähnliches wie das hier zu schreiben:
array[0] := 1;
array[1] := 2; array[2] := 3;
Delphi-Quellcode:
(Wobei alle Werte des Arrays eingesetzt werden sollen)
array := (1,2,3);
Das muss doch möglich sein... lg, Lukaro |
Re: Werte an Array übergeben?
ich hatte ein ähnliches Problem was ich jedoch über Schleifen lösen konnte. Um bei dir auszuschließen ob das es mit einer Schleife geht bzw. zu sagen das es doch geht müsste man wissen von welchem Typ "Irgendwas" ist und wie der Typ declariert ist.
|
Re: Werte an Array übergeben?
Ich bereite das meist Werte in einem Constanten bereich vor und kopiere später den Bereich.
Delphi-Quellcode:
Sieht eve. etwas umständlich aus, ist aber genau das was der C-Compiler auch macht.
type
TIntArray = array [0..5] of Integer; procedure Test; const ciTmp : TIntArray = (1, 2, 3, 4, 5, 6); var iTmp : TIntArray; i : Integer; begin Move(ciTmp, iTmp, SizeOf(TIntArray)); for i := 0 to 5 do Writeln(iTmp[i]); readln; end; |
Re: Werte an Array übergeben?
Es ist auch mit nicht konstanten Werten Möglich, und zwar per Template:
![]()
Delphi-Quellcode:
{$DEFINE FILL_ARRAY_TEMPLATE}
type _ARRAY_ITEM_ = string; {$INCLUDE FillArray_template.pas} type StringArray = _ARRAY_TYPE_; implementation {$R *.dfm} {$INCLUDE FillArray_template.pas} procedure TForm1.FormCreate(Sender: TObject); var s: StringArray; i: Integer; begin s := FillArray(['*blubb*', 'Hello', 'World', '*blubb*']); for i := 0 to High(s) do ShowMessage(s[i]); end; |
Re: Werte an Array übergeben?
Hmm wenn man von vorne her ungefär weiß wie groß, der größte Typ sein wird den man ins array legen will mach ich mir das nicht groß umstandlich.
Nehmen wir mal an dein größter Typ ist 30 kb groß.Ich weiß es ist nicht elegant aber zur übung reichts. :mrgreen: Übergabe Erfolgt Typenlos, also egal was für Typen du hast. Wichtig bei Strings diese immer mit blabla:String[größe] begrenzen sonst gibs Datensalat. ungetestet
Delphi-Quellcode:
So kann man elegant seine Dynamischen Array anlegen ohne Schleifen.const Maxsize = 30720; type TADummy= array[0..Maxsize] of Byte; type TDaten = record Size: Longword; Daten: TADummy; end; var Dynarray: array of TDaten; AnzDatensatz: integer; // Wenn es einen neuen Pointerinhalt zu verschieben gibt dann diese Proc aufrufen // // Beispiel Addpointer(meinpointer^,sizeof(Deintyp); Procedure AddPointer(var:Pointerinhalt,DatenSize:Longword); begin AnzDatensatz := High(Dynarray) + 1; //Wieviele Datensätze sind vorhanden SetLength(Dynarray,AnzDatensatz + 1); //Erhöhe die Anzahl der Datensetze um eins AnzDatensatz := High(Dynarray) + 1; //Aktuelle Anzahl der Datensätze with Dynarray[AnzDatensatz - 1] do // begin Size := DatenSize; Daten := Pointerinhalt end; end; //.... der rest bleibt dir überlassen ;) Index freigeben nicht vergessen wenn man wieder seine Daten aus Dynarray ließt. Hoffe konnte bisschen helfen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 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