Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Variable Argumente in C (https://www.delphipraxis.net/15504-variable-argumente-c.html)

Assarbad 29. Jan 2004 20:38


Variable Argumente in C
 
Hi,

mit ... habe ich eine Liste variabler Argumente. Allerdings muß ich deren Typ zur Compile-Zeit kennen um sie zu verarbeiten. Wie schreibe ich eine Funktion wie printf() welche komplett variable Argumente (also auch variable Typen) annimmt, bzw wie kann ich erreichen, daß die Argumente von einem Makro oder meiner Funktion direkt an wsprintf() weitergegeben werden?!?

Luckie 29. Jan 2004 20:51

Re: Variable Argumente in C
 
Frag mal hier: C/C++-Forum. Die sind da eventuell etwas besser drauf diesbezüglich.

trifid 29. Jan 2004 21:00

Re: Variable Argumente in C
 
was mir noch nicht klar ist
willst Du das in C oder in Delphi realisieren ?

Luckie 29. Jan 2004 21:03

Re: Variable Argumente in C
 
In C, sonst stünde es nicht hier, sondern in einer Delphi Sparte. Ich denke mal, dass Assa schon darauf achtet, wo er hin postet. ;)

Stanlay Hanks 29. Jan 2004 21:04

Re: Variable Argumente in C
 
Aus dem Thread Titel "...in C und der Sparte (Programmieren allgemein => alles, was mit Programmieren zu tun hat, aber kein Delphi ist) schließe ich mal, er will es in C machen :wink:

Man liest sich, Stanlay :hi:

trifid 29. Jan 2004 21:08

Re: Variable Argumente in C
 
er könnte auch das wie vergessen haben
Variable Argumente wie in C
nunja ...

Code:
void test (const char *format, ...)
{
   int            nRC = 0;
   char           *sString;

   va_list arglist;

   // alloc an Error-String
   sString = ncalloc (200, sizeof (char));

   // macro to set arg-stack(format)
   va_start (arglist, format);
   // sprintf for arg-stack
   _vsnprintf (sString, 200, format, arglist);

   // print Error-String
   MessageBox (GetActiveWindow (), sString, "info", MB_OK | MB_SYSTEMMODAL | MB_ICONSTOP);

   // reset the arg-stack
   va_end (arglist);
   free (sString);

   // make an exception to end the routine ...
   nexit (1);
}

d3g 29. Jan 2004 21:11

Re: Variable Argumente in C
 
In GNU C ist die Funktion vasprintf() dabei, der man eine va_list übergeben kann. Den Format-String kannst du ja dann deinen Bedürftnissen anpassen. Die Funktion ist aber weder in C99 noch in POSIX definiert, also musst du sie vielleicht aus dem GNU-libc-Source kopieren (sofern du dein Programm unter einer GPL-kompatiblen Lizenz veröffentlichst).

Assarbad 29. Jan 2004 21:14

Re: Variable Argumente in C
 
Danke euch allen, aber besonders trifid und d3g ;)

Ich werd mal schauen ob es solche Funcs auch bei der RTL in NTOSKRNL.EXE gibt. Ist für einen NT Kerneltreiber und ich bin deshalb etwas eingeschränkt. Wenn Rückmeldung gewünscht wird, kommt auch diese ;)

Oliver

Assarbad 29. Jan 2004 21:43

Re: Variable Argumente in C
 
Funzt das nicht ganz.

Ich habe nur folgende Funktionen zur Verfügung (ist ein NT Kerneltreiber):

Code:
_snprintf
_snwprintf
sprintf
swprintf
_vsnprintf
vsprintf
vsprintf() würde es ja tun, aber Unicode wäre mir schon weit lieber :-/ ... Ideen? Ratschläge?

trifid 29. Jan 2004 22:02

Re: Variable Argumente in C
 
Du könntest den vsprintf als Grundlage für einen eigenen myvsprintf verwenden, der dir den Unicode verarbeitet.
Wenn Du den Source von vsprintf hast, dürfte es nicht schwer die Zeichenketten von 8Bit auf 16Bit anzuheben. (so habe ich meine void test ... entwickelt)

aber moment mal
die _vsnprintf unterstützt doch unicode


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr.
Seite 1 von 2  1 2      

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