![]() |
C++ zu Delphi Übersetzung (va_ -Befehle)
Hi
ich habe folgenden C++ Code und wüsste gerne wie das in Delphi aussieht bzw. was die Funktionen machen.
Code:
Besonders interresieren mich die ... und die va_ -Befehle.
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); } Achja Add ist eine andere Funktion :
Delphi-Quellcode:
Add(pData : pointer; length : Cardinal; deleteString : boolean);
Code:
void Add(unsigned char* pData, unsigned long length, bool deleteString);
|
Re: C++ zu Delphi Übersetzung (va_ -Befehle)
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:
Und wird so
procedure TCompiledPacked.Add(const fmt: string; params: array of const);
var string2: string; begin string2 := Format(fmt, params); Add(string2, Length(string2), false); end;
Delphi-Quellcode:
aufgerufen.
Add('%s %.4d', ['Hallo', 123]);
|
Re: C++ zu Delphi Übersetzung (va_ -Befehle)
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 |
Re: C++ zu Delphi Übersetzung (va_ -Befehle)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 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