![]() |
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?!? |
Re: Variable Argumente in C
Frag mal hier:
![]() |
Re: Variable Argumente in C
was mir noch nicht klar ist
willst Du das in C oder in Delphi realisieren ? |
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. ;)
|
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: |
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); } |
Re: Variable Argumente in C
In GNU C ist die Funktion
![]() |
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 |
Re: Variable Argumente in C
Funzt das nicht ganz.
Ich habe nur folgende Funktionen zur Verfügung (ist ein NT Kerneltreiber):
Code:
vsprintf() würde es ja tun, aber Unicode wäre mir schon weit lieber :-/ ... Ideen? Ratschläge?
_snprintf
_snwprintf sprintf swprintf _vsnprintf vsprintf |
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 |
Re: Variable Argumente in C
Ne ne ... Mißverständnis.
Es geht nicht darum daß nur der Output Unicode ist, sondern die komplette Verarbeitung. Das ist das Problem. Stell dir vor du hast russische, chinesische, japanische und arabische Zeichen in Dateinamen und alles auf einmal. Da kann man nicht mehr Codeseiten hin- und herschalten. Es geht also darum daß ich irgendwie die komplette Verarbeitung in Unicode realisieren kann. Gibts vielleicht eine Möglichkeit mit Makros? Was hinten rauskommt muß bloß stimmen ... ist mir egal ob der vom Compiler erzeugte Code dann an allen Stellen anders aussieht. Hauptsache _ein_ einfacher Aufruf ermöglicht mir die formatierte Ausgabe von Unicode-Strings. |
Re: Variable Argumente in C
schau mal da nach
![]() aber kannst Du nicht die Dateinamen auch mit einem Typ Casten |
Re: Variable Argumente in C
C-Funktionen mit va_list Parameter koennen mit einer Glue-Funktion von Delphi aus elegant angesprochen werden.
Der Trick ist es die Funktion in Delphi mit einem "array of const" zu deklarieren und dann einen va_list Parameterblock zu erstellen. Die JNI Konversion auf ![]() |
Re: Variable Argumente in C
@Robert:
Zitat:
|
Re: Variable Argumente in C
Zitat:
edit: vielleicth hilfreich, wenn es um sicheres String-Handling im Kernel-Space geht: ![]() ![]() |
Re: Variable Argumente in C
Hi Nico,
oki hab die Func gefunden, aber leider gibts die scheinbar noch nicht in Win 2000. Watt nu? ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 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