![]() |
Prozedur zusammenbauen
Hallo,
ich weiß nicht recht weiter. Es gibt folgende Prozedur:
Delphi-Quellcode:
Die Paramter in der Prozedur sind Arrayeinträge und unterscheiden sich lediglich in den Zahlen 0,1,2 und es sollen mit einer Schleife beliebige fortlaufende Zahlen eingesetzt werden können.
DrawTextAcrossCols([arrColText[0,b],arrColText[1,b],arrColText[2,b]]);
Also DrawTextAcrossCols([arrColText[0,b],arrColText[1,b],arrColText[2,b],arrColText[n,b]]); Zuerst dachte ich, ich baue diese Prozedurparamter mit einem String zusammen. Also
Delphi-Quellcode:
Ist natürlich Quatsch. Aber ich weiß nicht, wie ich es machen soll.
var
prepare:string, begin .... prepare:='(['; for a:=0 to high(arrColumnText) do prepare:=prepare+'arrColText[0,b],'; prepare:=copy(prepare,0,length(prepare)-1); prepare:=prepare+'])'; for b:=0 to lns-1 do begin //DrawTextAcrossCols([arrColText[0,b],arrColText[1,b],arrColText[2,b]]); DrawTextAcrossCols+prepare; end; .... end; Diese "zusammengebaute" Prozedur muß in einem rutsch laufen, damit die mit den Paramtern übergebenen texte beim Ausdruck nebeneinander stehen. Wenn ich die Prozedur mit einer Schleife so aufrufe:
Delphi-Quellcode:
werden die Spalten nicht nebeneinander, sondern versetzt untereinander dargestellt.
for i:= 0 to high(arrColumnText) do
DrawTextAcrossCols([arrColText[[U][B]i[/B][/U],b] Scheidet also aus. Zurückspringen auf das ursprüngliche TOP scheidet auch aus. So nach dem Motto: "Ich kann den Ausdruck ja nicht anhalten, um wieder oben zu beginnen!" Wie kann ich die Prozedur so zusammenbauen, daß sie in einem Rutsch ausgeführt werden kann. Danke. Josef |
AW: Prozedur zusammenbauen
Erstelle ein Array mit den "n" Einträgen und übergib es der Prozedur!
|
AW: Prozedur zusammenbauen
[del]
|
AW: Prozedur zusammenbauen
Hi,
Zitat:
In welchen Array Typ soll ich denn meine Stringarrays packen? arrResult: array of .....???? for i:= 0 to n do |- die Null soll eben wäre das erste usw. arrResult[i]:= // arrColText[0,b]; <-- so sehen meine Stringarrays jetzt aus. Gib mir mal noch einen Typ. Ich komm momentan nicht vorwärts und nicht rückwärts. Danke. Josef |
AW: Prozedur zusammenbauen
Kann es ein, dass du sowas in der Art wie bei Format suchst:
Delphi-Quellcode:
Das wird da so gelöst:
Format('Text %s, Text %s, Text %s', [a, b, c]);
...
Delphi-Quellcode:
//Edit:
function Format(const Format: string; const Args: array of const): string;
begin ... end; Bei Polygon Syntax:
Delphi-Quellcode:
Beispiel:
procedure Polygon(Points: array of TPoint);
...
Delphi-Quellcode:
Canvas.Polygon([Point(10, 10), Point(30, 10), Point(130, 30), Point(240, 120)]);
...
Delphi-Quellcode:
procedure TCanvas.Polygon(const Points: array of TPoint);
begin ... end; |
AW: Prozedur zusammenbauen
Hi,
nein, sowas nicht. Ich such einfach eine Möglichkeit eine Prozedur vor dem Aufruf zusammenzubasteln. Je nachdem, wieviele Textarrays ich habe, muß die Prozedur unterschiedlich aufgerufen werden. Also: Wenn ich ein Text array habe, dann so:
Delphi-Quellcode:
Wenn es zwei sind, dann halt so:
DrawTextAcrossCols([arrColText[0,b]]);
Delphi-Quellcode:
usw.
DrawTextAcrossCols([arrColText[0,b], [arrColText[1,b] ]);
Händisch ist das ja kein Problem. Ich schreib halt soviele hin, wie ich habe. Es soll aber automatisiert werden und die Anzahl dieser TextArray's ist eben nicht immer gleich. Danke. Josef |
AW: Prozedur zusammenbauen
Die Art der möglich Zuweisungen lassen auf eine Array of Const schließen, so einfach kann da kein Array zugewiesen werden. Hier gibt es einen Artikel zu diesem Thema:
![]() |
AW: Prozedur zusammenbauen
Das Beispiel mit Points ist vielleicht nicht so glücklich gewählt, aber ich ich erstelle ein Array mit einer n-Zahl von Points und übergebe es als Polygon. Das Polygon schluckt also n Parameter.
|
AW: Prozedur zusammenbauen
Mehrdimensionale Arrays kann man AFAIK nicht als offene Arrays übergeben, aber wenn man typisiert, sollte das klappen. Schnell unter Lazarus zusammengetippt und ausprobiert:
Delphi-Quellcode:
Kann aber auch sein, dass ich das Problem nicht richtig verstanden habe.
type
TStringArray = array of string; procedure ShowValues(const ValueArrays: array of TStringArray); var i, j: integer; begin for i := Low(ValueArrays) to High(ValueArrays) do for j := Low(ValueArrays[i]) to High(ValueArrays[i]) do ShowMessage(ValueArrays[i, j]); end; { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var Arr1, Arr2: TStringArray; begin SetLength(Arr1, 2); Arr1[0] := 'Hallo'; Arr1[1] := 'Welt'; SetLength(Arr2, 3); Arr2[0] := 'Hier'; Arr2[1] := 'bin'; Arr2[2] := 'ich'; ShowValues([Arr1, Arr2]); Arr1 := nil; Arr2 := nil; end; |
AW: Prozedur zusammenbauen
IMHO wird etwas gesucht das so aussehen soll, aber natürlich nicht funktioniert
Delphi-Quellcode:
Type
TStringArray=Array of String; procedure TForm5.Button1Click(Sender: TObject); var DerWäreschönWennAlsConstArrayÜbergebbar:TStringArray; begin SetLength(a,2); DerWäreschönWennAlsConstArrayÜbergebbar[0] := 'eins'; DerWäreschönWennAlsConstArrayÜbergebbar[1] := 'zwei'; Showmessage(Format('Ausgabe 1. %s 2. %s',DerWäreschönWennAlsConstArrayÜbergebbar)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 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