Funktioniert AnsiString::cat_vprintf nicht?



  • Oder weiß ich es nur nicht richtig zu verwenden?

    Ich habe eine Form mit einem TMemo "LogMemo" erstellt und möchte nun mittels printf-Syntax den Inhalt dieses Memos erweitern.

    Ich habe also folgende Funktion erstellt, die das bewerkstelligen soll:

    void TMainWindow::AppendToLog(const char *format, ...) {
    	va_list args;
    	va_start(args, format);
    	LogMemo->Text = LogMemo->Text.cat_vprintf(format, args);
    	va_end(args);
    
    }
    

    ...die Hilfe ist nicht besonders ausführlich, was cat_vprintf() angeht, aber ich denke das sollte gehen, habe die fragliche Zeile auch schonmal durch folgende ersetzt:

    LogMemo->Text = LogMemo->Text.cat_vprintf(format, &args);
    

    Das brachte aber keine Verbesserung. Mein Memo hat nach diese Zeile immer nur eine Zahl als Inhalt, welche die Länge des "format" Strings ist.

    Was mache ich falsch?

    Danke im Voraus
    Christian



  • Memo1->Lines->Add(text);
    


  • Danke, das wusste ich bereits 🙂 ... wie oben erwähnt, soll die Erweiterung des Memo-Textes allerdings mittels der printf-Syntax erfolgen, das heißt mittels

    AppendToLog(const char * format, ...)
    

    Das bedeutet, dass ich mit der variablen Argumente-Liste arbeiten muss.



  • Hallo,

    Wie wärs mit

    AnsiString text;
    text.cat_vprintf(format, args);
    LogMemo->Text = text; // oder eben Add
    

    Laut Hilfe gibt cat_vprintf die Anzahl der angefügten Bytes zurück.



  • Ups, peinlich... 🙂 hab mich von den anderen printf() Funktionen irritieren lassen. Der korrekte Code sieht jetzt so aus:

    void TMainWindow::AppendToLog(const char *format, ...) {
    	va_list args;
    	va_start(args, format);
    	LogMemo->Text.cat_vprintf(format, &args);
    	va_end(args);
    
    }
    

    Vielen Dank!
    Christian


Anmelden zum Antworten