fehler bei programmstart



  • hi,

    wenn ich mein programm, ohne fehler, compiliert habe, kommt beim ausführen ein fehler "Format '%s' nicht kompatibel mit argument" 😕 . woher kommt das, und wie kann ich diesen fehler beheben??? danke schon mal



  • zeig mal den code her 🙂



  • #include <vcl.h>
    #pragma hdrstop
    //---------------------------------------------------------------------------
    USEFORM("Unit1.cpp", Form1);
    USEFORM("Unit2.cpp", Form2);
    //---------------------------------------------------------------------------
    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
        try
        {
             Application->Initialize();
             Application->CreateForm(__classid(TForm1), &Form1);
    :arrow_right:  Application->CreateForm(__classid(TForm2), &Form2);
             Application->Run();
        }
        catch (Exception &exception)
        {
             Application->ShowException(&exception);
        }
        catch (...)
        {
             try
             {
                 throw Exception("");
             }
             catch (Exception &exception)
             {
                 Application->ShowException(&exception);
             }
        }
        return 0;
    }
    

    da isser. ich weiss, dass das der generierte code is, aber da zeigt der debugger den fehler an 😕 😕 .



  • Was für Code (von dir geschrieben) wird denn beim Erzeugen von Form2 ausgeführt, z.B. im Konstruktor, im OnCreate usw.?



  • im constructor gar nix. auf dieser for is nur ne checkbox die nix macht und ein button Application->Terminate(); mehr nich.



  • ich hab jetzt noch weiter gemacht. also hier der code von der 2.form

    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit2.h"
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm2 *Form2;
    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm2::BitBtn1Click(TObject *Sender)
    {
        Application->Terminate();    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm2::CheckBox1Click(TObject *Sender)
    {
        if(CheckBox1->Checked == true){
            Form1->Server1->Active = true;
            Form1->Client1->Active = false;
        }
        else
        {
            Form1->Server1->Active = false;
    
        }
    
    }
    

    das is er. kann mir jetzt jemand weiterhelfen?



  • zeig mal den code von form2

    ist da irgenetwas in der Richtung

    (%s , variable);
    z.B.
    printf(%s , variable); ?????



  • der code von form2 is der über dienem beitrag 😉 . und so eine variable gibts bei mir nich 😕 .



  • tuxman schrieb:

    und so eine variable gibts bei mir nich

    Auch nicht in Form1? Bist du dein Programm schon mal schrittweise durchgegangen (F8 und F7 statt F9)?



  • Den "Format '%s' nicht kompatibel mit argument"-Fehler hatte ich auch schon
    öfters und Grund war jeweils der Zugriff auf ein noch nicht erstelltes Objekt.
    Habe ich z.B. eine selbsterstellte Komponente in einem Projekt verwendet und
    innerhalb der Komponente trat ein solcher Zugriff auf einen NULL-Pointer auf,
    dann kam diese etwas irreführende Fehlermeldung.
    Das scheint aber nicht die einzige Situation zu sein, in der die Meldung auf-
    taucht. Auch ohne selbstgeschriebene Komponente hatte ich die Meldung schon.
    Aber wie gesagt: Grund war immer der Zugriff auf einen NULL-Pointer.
    Und wie Jansen schon richtig vorgeschlagen hat, hat bei mir ein schrittweises
    Durchgehen des Programms diesen Fehler aufgedeckt.

    Gruß,

    Alexander



  • danke @ Alexander Kempf

    ich hab schon F7 und F8 benutzt, aber der fehler hat sich dadurch irgendiwe nich wirklich deutlichgemacht. der fehler war tatsächlich der, dass ich auf form2 zugegriffen hab, bevor sie erstellt wurde.


Anmelden zum Antworten