AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie baut man sowas wie writeln/sprintf selbst ?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie baut man sowas wie writeln/sprintf selbst ?

Ein Thema von flash2009 · begonnen am 25. Dez 2008 · letzter Beitrag vom 27. Dez 2008
 
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Wie baut man sowas wie writeln/sprintf selbst ?

  Alt 25. Dez 2008, 15:20
Zitat von mkinzler:
Man muss den Array im Aufruf der Funktion dynamisch erstellen (z.B. VarArrayOf())
Äh. Nein? Eine Routine mit einem 'Array Of Const'-Parameter kann man so aufrufen, wie bei der Format-Funktion. Nur eben der Zugriff ist nicht trivial. Warte mal, ich kram mal in meinem Archiv... *kram* *such*
Delphi-Quellcode:
Function ElementOfConst(aIndex: Integer; aArray: Array Of Const): Variant;
Begin
  With aArray[aIndex] Do
    Case VType Of
      vtInteger:
        Result := VInteger;
      vtBoolean:
        Result := vBoolean;
      vtChar:
        Result := VChar;
      vtExtended:
        Result := vExtended^;
      vtString:
        Result := VString^;
      vtPChar:
        Result := StrPas(VPChar);
      vtObject:
        Result := VObject.ClassName;
      vtClass:
        Result := VClass.ClassName;
      vtAnsiString:
        Result := String(VAnsiString);
      vtCurrency:
        Result := VCurrency^;
      vtVariant:
        Result := VVariant^;
      vtInt64:
        Result := VInt64^;
    End;
End;
So kann ich auf die einzelnen Elemente eines 'Array Of Const' zugreifen, was eigentlich ein Array Of TVarRec ist (ähnlich aber nicht identisch mit TVarData, also einem Variant).

Ich kann dann also sowas spektakuläres bauen, wie z.B.:
Delphi-Quellcode:
Procedure ListItems (aArgs : Array Of Const);
Var
  i : Integer;

Begin
  For i:=0 to High (aArgs) do
    Writeln (ElementOfConst(i,aArgs));
End;
...
ListItems (['Foo','Bar',1.2, 3.456, 7]);
Ob man das jemals benötigt, steht auf einem anderen Blatt.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
 


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 12:30 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