Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Werte an Array übergeben? (https://www.delphipraxis.net/36374-werte-array-uebergeben.html)

Pseudemys Nelsoni 19. Dez 2004 10:35


Werte an Array übergeben?
 
hi,

wie kann ich sowas wie das hier hinbekommen:

Delphi-Quellcode:
MeinArray := (@Irgendwas^.Item1, @Irgendwas^.Item2, @Irgendwas^.Item3);
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[0] := @Irgendwas^.Item1
MeinArray[1] := @Irgendwas^.Item1

usw...


schreiben zu müssen?

GimbaR 19. Dez 2004 10:43

Re: Werte an Array übergeben?
 
w00t???
najo, ich denk mal du meinst das:
Delphi-Quellcode:
Setlength(meinarray, 3);
meinarray[0]:=1;
meinarray[1]:=2;
meinarray[2]:=3;
wenn es das net ist, sry, abba ich versteh sonst net, was genau du meinst :(

mfg GimbaR

Pseudemys Nelsoni 19. Dez 2004 10:48

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:
EinArray := ('wert1', 'wert2', 'wert3',...'wert49', 'wert50);
ohne:

Delphi-Quellcode:
EinArray[0] := 'wert1';
EinArray[1] := 'wert0'
EinArray[2] := 'wert2'
EinArray[3] := 'wert3'
EinArray[4] := 'wert4'
EinArray[5] := 'wert5'
schreiben zu müssen...

achja...wer jetzt an eine schleife denkt - wird kaum gehen, da ich keine strings verwende sondern pointer auf variablen..

GimbaR 19. Dez 2004 10:52

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

Pseudemys Nelsoni 19. Dez 2004 10:53

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:

Lukaro 31. Okt 2005 08:39

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:
array[0] := 1;
array[1] := 2;
array[2] := 3;
sowas ähnliches wie das hier zu schreiben:
Delphi-Quellcode:
array := (1,2,3);
(Wobei alle Werte des Arrays eingesetzt werden sollen)

Das muss doch möglich sein...
lg, Lukaro

SirThornberry 31. Okt 2005 08:47

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.

neolithos 31. Okt 2005 08:52

Re: Werte an Array übergeben?
 
Ich bereite das meist Werte in einem Constanten bereich vor und kopiere später den Bereich.
Delphi-Quellcode:
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;
Sieht eve. etwas umständlich aus, ist aber genau das was der C-Compiler auch macht.

Khabarakh 31. Okt 2005 09:04

Re: Werte an Array übergeben?
 
Es ist auch mit nicht konstanten Werten Möglich, und zwar per Template: http://www.delphipraxis.net/internal...=428049#428049

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;

Net7 31. Okt 2005 09:39

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:

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 ;)
So kann man elegant seine Dynamischen Array anlegen ohne Schleifen.

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 02:24 Uhr.
Seite 1 von 2  1 2      

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