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
 
#4

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

  Alt 25. Dez 2008, 09:33
In Delphi kann man keine beliebige Anzahl von Parametern deklarieren. In C(++) und C# geht das, weil hier die Aufrufkonventionen anders sind und die Sprache zudem spezielle syntaktische Elemente bereit hält.

WS1976 hat schon angedeutet, wie man ein sprintf in Delphi theoretisch deklarieren könnte. Leider benötigst Du hier allgemeingültige Typen (Variants) und damit funktioniert das nicht. Die Lösung liegt im etwas merkwürdigen Konstrukt 'Array Of Const', mit dem man heterogene Daten in Form eines dynamischen Arrays übergeben kann. Allerdings ist der Zugriff auf einzelne Elemente dieses Arrays nicht gerade trivial.

Die Lösung von PMM ist also die Richtige:
Delphi-Quellcode:
Procedure PrintF (Const FmtStr : String; Args : Array Of Const);
Begin
  Writeln (Format(FmtStr, Args))
End;
Und der Aufruf:
PrintF('Hallo %s, Frohe Weihnacht und einen guten Rutsch ins Jahr %d',['flash2009',2009]);
"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 22:55 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