AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi C++ zu Delphi Übersetzung (va_ -Befehle)
Thema durchsuchen
Ansicht
Themen-Optionen

C++ zu Delphi Übersetzung (va_ -Befehle)

Ein Thema von eagle616 · begonnen am 6. Aug 2009 · letzter Beitrag vom 25. Aug 2009
Antwort Antwort
eagle616

Registriert seit: 1. Mär 2009
17 Beiträge
 
#1

C++ zu Delphi Übersetzung (va_ -Befehle)

  Alt 6. Aug 2009, 18:00
Hi

ich habe folgenden C++ Code und wüsste gerne wie das in Delphi aussieht bzw. was die Funktionen machen.

Code:
void CompiledPacket::Add(char* pString, ...)
{
   va_list args;
   va_start(args, pString);
   char string2[5000];
   vsprintf(string2, pString, args);
   va_end(args);
   Add((unsigned char*)string2, (unsigned long)strlen(string2), false);
}
Besonders interresieren mich die ... und die va_ -Befehle.

Achja Add ist eine andere Funktion :
 Add(pData : pointer; length : Cardinal; deleteString : boolean);
Code:
void Add(unsigned char* pData, unsigned long length, bool deleteString);
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
589 Beiträge
 
Delphi XE6 Enterprise
 
#2

Re: C++ zu Delphi Übersetzung (va_ -Befehle)

  Alt 13. Aug 2009, 14:12
Der Funktion "CompiledPacket::Add" kannst Du nach dem ersten, festen Parameter "pString" eine beliebige Zahl weiterer Parameter beliebigen Typs übergeben. In dem konkreten Fall ist "pString" ein Formatstring und die weiteren Parameter sind die Werte, die mittels dieses Formatstrings formatiert werden sollen.

In Delphi gibt es keine Funktionen mit beliebiger Anzahl Parameter; hier greift man auf "array of const" zurück, um den gleichen Effekt zu erzielen.

Das könnte dann so aussehen:
Delphi-Quellcode:
procedure TCompiledPacked.Add(const fmt: string; params: array of const);
var string2: string;
begin
  string2 := Format(fmt, params);
  Add(string2, Length(string2), false);
end;
Und wird so Add('%s %.4d', ['Hallo', 123]); aufgerufen.
  Mit Zitat antworten Zitat
eagle616

Registriert seit: 1. Mär 2009
17 Beiträge
 
#3

Re: C++ zu Delphi Übersetzung (va_ -Befehle)

  Alt 17. Aug 2009, 10:21
Ok

vielen Dank das mit den unendlich vielen Parametern hab ich mir schon gedacht aber die Delphi Lösung ist hilfreich.

Aber was hat es jetzt mit den va-Befehlen auf sich?

mfg eagle616
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
589 Beiträge
 
Delphi XE6 Enterprise
 
#4

Re: C++ zu Delphi Übersetzung (va_ -Befehle)

  Alt 25. Aug 2009, 10:28
Die va_ Befehle sind Macros.

Dazu gibt es hier eine wirklich sehr schön ausführliche Darstellung.
  Mit Zitat antworten Zitat
Antwort Antwort


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:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz