Delphi-PRAXiS
Seite 2 von 2     12   

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)

Lukaro 31. Okt 2005 09:47

Re: Werte an Array übergeben?
 
Naja, ich dachte eher, ich könnte den Quelltext damit verkleinern und vereinfachen, (ich nehme mal an, dass ihr die Frage richtig verstanden habt, gab ja 3 Beispiele *g*) und nich noch etwa anfangen zu rechnen oder so.

Es geht einfach nur darum einen Array, der 9 Strings beinhaltet mit "hardgecodeten" Strings zu füllen. Naja, dann mache ichs halt weiter mit 9 Zeilen, aber danke für die Antworten :stupid:

Lukaro

Khabarakh 31. Okt 2005 10:00

Re: Werte an Array übergeben?
 
Bei meiner Variante musst du nicht rechnen, du musst nur ein einziges Mal diese paar Zeilen rund um "implementation" hinzufügen. Danach hast du eine komfortable Funktion (komfortabler geht es eigentlich nicht mehr), die du im Code verwenden kannst, ohne überhaupt zu wissen, was Pointer sind.
Ich finde sie jedenfalls elegant :wink: .

Net7 31. Okt 2005 10:02

Re: Werte an Array übergeben?
 
Zitat:

Zitat von Lukaro
Naja, ich dachte eher, ich könnte den Quelltext damit verkleinern und vereinfachen, (ich nehme mal an, dass ihr die Frage richtig verstanden habt, gab ja 3 Beispiele *g*) und nich noch etwa anfangen zu rechnen oder so.


Axxxooooooooo :wall: Ich machs mit einer. :mrgreen:

na dann so.

Delphi-Quellcode:

const meinehardcorestrings: array[1..50] of string = ('bla','blabla','blubb',usw
Gruß Net7.

maximov 31. Okt 2005 10:10

Re: Werte an Array übergeben?
 
Ich hab noch ne variante, die der geforderten wohl am nähesten kommt:

Delphi-Quellcode:
type

   TPointerArr = array [0..3] of pointer;

procedure Setpointers(var pointers:TPointerArr; const values:array of pointer);
var
   i:integer;
begin
   for i := 0 to Pred(Min(Length(pointers), Length(Values))) do
      pointers[i] := values[i];
end;

...

procedure TForm2.Button1Click(Sender: TObject);
var
   ps : TPointerArr;
begin
   Setpointers(ps, [pointer($bad74f),pointer($bad74f),pointer($bad74f)]);
end;
das geht natürlich nur wegen den dynamischen-array-konstruktoren, die man bei const-array-parametern zur verfügung hat.

SirThornberry 31. Okt 2005 10:13

Re: Werte an Array übergeben?
 
@Khabarakh & @Net7: Ich dachte solche Varianten gehen nur wenn man mit Konstanten werten arbeitet so das sie letztendlich zum Zeitpunkt des compilierens in feste Adressen gewandelt werden können. Bei Pseudemys Nelsoni geht es ja aber darum die Werte einer Variablen in so ein Array zu packen und da wird nix konstant definiert sein (sonst könnte er ja auf die Werte verzichten)

Khabarakh 31. Okt 2005 10:21

Re: Werte an Array übergeben?
 
Zitat:

Zitat von Khabarakh
Es ist auch mit nicht konstanten Werten Möglich, und zwar per Template: [...]

:wink:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  sArray: StringArray;
  i: Integer;
  s: string;
begin
  Randomize;
  s := StringOfChar(Chr(Ord('A') + Random(Ord('Z') - Ord('A') + 1)), Random(20));

  sArray := FillArray(['*blubb*', 'Hello', 'World', '*blubb*', s]);
  for i := 0 to High(sArray) do
    ShowMessage(sArray[i]);
end;
Funktioniert ebenfalls.

[edit]Bei der Konstante von Net7 hast du natürlich Recht. [/edit]

Net7 31. Okt 2005 10:22

Re: Werte an Array übergeben?
 
Zitat:

Zitat von SirThornberry
@Khabarakh & @Net7: Ich dachte solche Varianten gehen nur wenn man mit Konstanten werten arbeitet so das sie letztendlich zum Zeitpunkt des compilierens in feste Adressen gewandelt werden können. Bei Pseudemys Nelsoni geht es ja aber darum die Werte einer Variablen in so ein Array zu packen und da wird nix konstant definiert sein (sonst könnte er ja auf die Werte verzichten)


Hmm dann war ja mein erstest Beispiel doch richtg. (also richtig gelesen :wink: )

Zitat:

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

Variablen könnten ja jeden Typ haben. Also muss er Typenlos übergeben können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 Uhr.
Seite 2 von 2     12   

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