Anfängerfrage



  • Aber wie soll ich denn jetzt die Variable initalisieren? Ich habe folgenden Code gebastelt, aber das Programm stürzt ab, bzw. XP meckert.

    char *szText;
             wsprintf(szText, "Sie drückten OK insgesamt %d mal\nSie dürckten ABBRECHEN insgesamt %d mal", iIDOK, iIDCANCEL);
    

    Wie soll ich denn szText initalisieren, so dass die Größe dynamisch ist? Und was bedeutet eigentlich "const" vor einer Variable????

    Danke für eure Antworten.

    MFG
    noob



  • du musst zuerst noch Speicher für die Variable allokieren, so zeigt der Pointer szText nämlich ins Nirvana...

    cu para
    😃



  • TCHAR szText[100];



  • // includes
    #include <windows.h>
    
    // api entrypint
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nShowCmd)
    {
        // private
        int resOk=0, resCancel=0;
        char szText[64];
    
        // loop (10)
        for(int c=0; c<10; c++){
            wsprintf((char*)&szText, "Sie haben %d mal OK geklickt und %d mal Cancel gedrückt!", resOk, resCancel);
            int res = MessageBox(0, szText, "MessageBox Information", MB_OKCANCEL);
            if(res==IDOK)
                resOk++;
            else
                resCancel++;
        }
    
        return 0;
    }
    

    cu para
    😃



  • Danke erstmal

    Kannst du mir bitte noch erklären was dieses char* in Klammern und das & vor der Variable bedeuten? Ich will das jetzt nämlich endlich richtig kapieren. und was bedeutet das, wenn eine Variable const ist ?

    Danke

    MFG
    noob



  • int wsprintf(
    
        LPTSTR lpOut,   // pointer to buffer for output 
        LPCTSTR lpFmt,  // pointer to format-control string 
        ... // optional arguments
       );   
    
    Parameters
    
    lpOut
    
    Points to a buffer to receive the formatted output. 
    
    lpFmt
    
    Points to a null-terminated string that contains the format-control specifications. In addition to ordinary ASCII characters, a format specification for each argument appears in this string. For more information about the format specification, see the Remarks section. 
    
    ...
    
    Specifies one or more optional arguments. The number and type of argument parameters depend on the corresponding format-control specifications in the lpFmt parameter.
    

    das mit dem "&" ist deshalb, weil die Funktion wsprintf(...) einen Zeiger erwartet (s.o.)

    da szText bei mir aber ein szText[64] ist und kein *szText muss man noch einwenig casten, also ich schreibe das vor die Variable, was die Funktion verlangt.

    Also ich finde nicht, das ich das so eichtig gut erklären kann.
    Ich würde dir mal empfehlen erst mal ein paar Tutorials über C durchzuarbeiten und nicht gleich mit WinApi zu arbeiten.

    Ich würde mir an deiner Stelle erst mal klar machen was pointer sind...
    http://www.pronix.de/ckurs/ckurs55.html

    cu para
    😃



  • (char 😉 bedeutet eine zwangsl?ufige Umwandlung eines Char-Feldes in eine
    Stringvariable. Eine Stringvariable ist eigentlich nur Pointer auf
    das erste Element eines Char-Feldes. Darum Zeichen "&" vor dem szText.



  • ihr wisst aber schon, dass ein char[] intern als char* gehandhabt wird und ihr weder casten noch den adress operator braucht?



  • Original erstellt von Shade Of Mine:
    ihr wisst aber schon, dass ein char[] intern als char gehandhabt wird und ihr weder casten noch den adress operator braucht?*

    Das mag ja schon sein, aber ohne das (char*) meckert der Compiler trotzdem...

    cu para
    😃



  • Original erstellt von paranoiac.org:
    Das mag ja schon sein, aber ohne das (char) meckert der Compiler trotzdem...
    cu para
    😃
    *

    teste bitte mal
    wsprintf(szText,...
    also kein cast und kein &.
    welche warnung zeigt er da an?



  • Also wenn ich das richtig verstehe, dann kann szText maximal nur 63 Zeichen lang sein, oder????



  • Ja, genau!
    Denn im hinten dran (szText[63]) steht ja der ASCII-Code 0 ("\0").

    MfG PMrogan



  • teste bitte mal
    wsprintf(szText,...
    also kein cast und kein &.
    welche warnung zeigt er da an?[/QB]

    Hast wohl Recht...
    Warnung war bei '&' aber ohne '(char*)'

    cu para
    😃

    [ Dieser Beitrag wurde am 23.11.2002 um 21:23 Uhr von paranoiac.org editiert. ]



  • ...war ein Doppelpost...

    cu para
    😃

    [ Dieser Beitrag wurde am 23.11.2002 um 21:25 Uhr von paranoiac.org editiert. ]


Anmelden zum Antworten