AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur zusammenbauen

Ein Thema von josefkoller · begonnen am 17. Nov 2012 · letzter Beitrag vom 18. Nov 2012
Antwort Antwort
Seite 1 von 2  1 2      
Popov
(Gast)

n/a Beiträge
 
#1

AW: Prozedur zusammenbauen

  Alt 17. Nov 2012, 19:44
Kann es ein, dass du sowas in der Art wie bei Format suchst:

Delphi-Quellcode:
Format('Text %s, Text %s, Text %s', [a, b, c]);
...
Das wird da so gelöst:

Delphi-Quellcode:
function Format(const Format: string; const Args: array of const): string;
begin
  ...
end;
//Edit:

Bei Polygon

Syntax:
Delphi-Quellcode:
procedure Polygon(Points: array of TPoint);
...
Beispiel:
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;

Geändert von Popov (17. Nov 2012 um 19:51 Uhr)
  Mit Zitat antworten Zitat
josefkoller

Registriert seit: 22. Okt 2012
49 Beiträge
 
#2

AW: Prozedur zusammenbauen

  Alt 17. Nov 2012, 20:10
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:

DrawTextAcrossCols([arrColText[0,b]]); Wenn es zwei sind, dann halt so:

DrawTextAcrossCols([arrColText[0,b], [arrColText[1,b] ]); usw.

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
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Prozedur zusammenbauen

  Alt 17. Nov 2012, 20:14
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: http://rvelthuis.de/articles/articles-openarr.html
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Prozedur zusammenbauen

  Alt 17. Nov 2012, 20:40
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#5

AW: Prozedur zusammenbauen

  Alt 17. Nov 2012, 20:42
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:
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;
Kann aber auch sein, dass ich das Problem nicht richtig verstanden habe.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Prozedur zusammenbauen

  Alt 17. Nov 2012, 20:55
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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#7

AW: Prozedur zusammenbauen

  Alt 17. Nov 2012, 20:59
Nachdem ich jetzt den Ausgangspost noch 4 Mal intensiv durchgelesen habe könntest Du Recht haben. Ich hatte mich auch schon gewundert wegen des Array of const.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#8

AW: Prozedur zusammenbauen

  Alt 17. Nov 2012, 21:23
Zeig doch mal die Deklaration von DrawTextAcrossCols.

wie in Deinem Beispiel hakt es. wie bekomme ich da eins, zwei drei, vier Arrays rein? also nicht händisch reingetippt.
Du legst dr auch noch eine Variable (array of TStringArray ) an, befüllst sie und übergibst dann diese an die Funktion.


Die Art der möglich Zuweisungen lassen auf eine Array of Const schließen,
Zitat:
so einfach kann da kein Array zugewiesen werden.
PS: ein array of const ist intern ein array of TVarRec und sowas kann man einer Funktion auch übergeben.
(nur die Speicherverwaltung ist etwas nervig, darum ist es schönder, wenn man diese Array-Verwaltung in einer Klasse kapselt, welche sich sicher um alles kümmert)

Man kann halt nur Arrays des gleichen Typs zuweisen.
Man kann z.B. auch kein Array of AnsiString einem Array of WideString oder einemAray of Variant zuweisen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (17. Nov 2012 um 21:28 Uhr)
  Mit Zitat antworten Zitat
josefkoller

Registriert seit: 22. Okt 2012
49 Beiträge
 
#9

AW: Prozedur zusammenbauen

  Alt 17. Nov 2012, 21:10
Hi,

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:
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;
Kann aber auch sein, dass ich das Problem nicht richtig verstanden habe.

eben bei

ShowValues([Arr1, Arr2]);

wie in Deinem Beispiel hakt es. wie bekomme ich da eins, zwei drei, vier Arrays rein? also nicht händisch reingetippt.

danke.

Josef
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#10

AW: Prozedur zusammenbauen

  Alt 17. Nov 2012, 21:17
Nun bin ich aber doch wieder verwirrt. Kannst Du mir mal einen angedachten Aufruf anhand meines Beispiels zeigen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:35 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