.exe parameter verarbeiten



  • hagbard_ schrieb:

    Ich weiß nicht was ich falsch mache ...

    Leider ist beim letzten Transport aus der Generalüberholung unser kompletter Bestand an Kristallkugeln zerstört worden. Ich muss dich deshalb leider bitten, doch ein Wenig Mitleid mit uns zu haben und mal den Code deines Versuchs zu zeigen...

    -junix



  • Leider ist beim letzten Transport aus der Generalüberholung unser kompletter Bestand an Kristallkugeln zerstört worden. Ich muss dich deshalb leider bitten, doch ein Wenig Mitleid mit uns zu haben und mal den Code deines Versuchs zu zeigen...

    na dann bin ich ja mal beruhigt .. ich befürchtete schon, ihr hättet eure Fähigkeit, hellzusehen verloren.

    so, mein code :):

    Project1.exe:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       char* v = "test";
        spawnl(P_NOWAIT, "Project2.exe", "Project2.exe", v, NULL);
    }
    

    Project2.exe:

    void __fastcall TForm3::FormActivate(TObject *Sender)
    {
     for (int i=1;i<=ParamCount();i++)
      {
        if (LowerCase(ParamStr(i)) != "test")
          ShowMessage("Erfolgreich ...");
    
      }
    
    }
    

    Grüße und besten Dank

    Matthi



  • hagbard_ schrieb:

    Project2.exe:
    [cpp]
    void __fastcall TForm3::FormActivate(TObject *Sender)
    {
    for (int i=1;i<=ParamCount();i++)
    {
    if (LowerCase(ParamStr(i)) != "test")
    ShowMessage("Erfolgreich ...");

    }

    }
    [/cpp]

    Warum "!="?



  • sorry mein fehler .. hab schon == gemacht .. nur hab ich dann mal was geändert, weil ich dachte, er kennt die zeichenkette nicht .. funktioniert mit == genausowenig

    lg hagbard



  • Hast du dir einzelnen Werte schoneinmal angeschaut? Vielleicht funktioniert ja auch der Programmaufrauf mittels spawn... nicht richtig.



  • hmm, thx für den hinweis .. interessant ist, dass ich, wenn ich paramstr(1) in project1.exe an showmessage übergebe, ich eine leeres dialogfeld als ausgabe bekomme .. keine änderungen beim code .. was kann da falsch sein?

    grüße und dank

    hagbard



  • ups, habe eine konvertierung in ansistring vergessen .. dann kommt in project1.exe die richtige ausgabe, aber in project2.exe kann ich immer noch nicht auf ParamStr(1) zugreifen 😢
    lg hagbard



  • Versuch mal die project2.exe direkt von der Konsole zu starten. Dann kannst du wenigsten endgültig herausbekommen, in welchem Programm der Fehler steckt.



  • Du kannst auch die Parameter über das Menü Start|Parameter im BCB eintragen, um Dein Projekt zu debuggen, anstatt das Programm von
    der Konsole aus zu starten.

    Gruß,

    Alexander



  • habe jetzt das Programm (Project2.exe) aus der Konsole gestartet .. jedoch passiert auch nichts anderes als sonst 😢

    Hmm ... weiß keiner weiter?
    Kann es vielleicht jemand selbst auf seinem Rechner ausprobieren?
    Wäre äußerst dankbar!

    Grüße

    hagbard



  • hagbard_ schrieb:

    Hmm ... weiß keiner weiter?

    Hast Du meinen Vorschlag auch ausprobiert? So kannst Du nämlich genau debuggen, ob Dein Projekt2.exe das tut, was es soll.

    Gruß,

    Alexander



  • aja, habe ich zuerst nicht beachtet 😢
    habe dort als parameter "test" eingegeben - erfolgslos - unveränderte ausgabe.. von project1.exe kann ich ja immer ganz normal auf die parameter zugreifen, nur von project2.exe funkt es eben leider nicht - ich verstehe leider immer noch nicht, was ich falsch mache 😢

    grüße

    hagbard



  • hagbard_ schrieb:

    Kann es vielleicht jemand selbst auf seinem Rechner ausprobieren?

    Kannst es mir ja mal zuschicken (Mail im Profil). Am besten mit Quelltext.



  • Dasd schrieb:

    Kannst es mir ja mal zuschicken (Mail im Profil). Am besten mit Quelltext.

    Oder noch besser mal ein bisschen Source-Code hier rein posten. Dann können Dir
    a) vielleicht mehr Leute helfen
    b) andere auch noch was lernen

    Gruß,

    Alexander



  • ok, poste ich nochmal meine sourcecode:
    also habe ein formular mit einem button und ich rufe dann die andere .exe auf (über den button) mit folgender funktion:

    Quellcode in der Unit1.cpp:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
      char* v = "test";
    
        spawnl(P_NOWAIT, "Project2.exe", "Project2.exe", v, NULL);
     for (int i=1;i<=ParamCount();i++)
      {
        if (LowerCase(ParamStr(i)) == "test")
          ShowMessage("Erfolgreich ...");
      } //hier liest er die Parameter richtig aus
    
    }
    

    und nun in der unit2.cpp, welche sich in der anderen (Project2.exe) exe befindet:

    void __fastcall TForm3::FormActivate(TObject *Sender)
    {
     for (int i=1;i<=ParamCount();i++)
      {
        if (LowerCase(ParamStr(i)) == "test")
          ShowMessage("Erfolgreich ...");
        else
          ShowMessage("Nicht!");
      }     //hier scheint das Ganze ignoriert zu werden   
    }
    

    wahrscheinlich habe ich mich vorhin ein wenig unklar ausgedrückt .. vielleicht ist es jetzt ein wenig verständlicher 🙂

    grüße

    hagbard



  • hagbard_ schrieb:

    habe dort als parameter "test" eingegeben - erfolgslos - unveränderte ausgabe.

    Hast Du auch mal einen Breakpoint gesetzt, um zu überprüfen, ob ParamStr() irgendwelche Werte enthält? Ich kann mir kaum vorstellen,
    dass ParamStr() und ParamCount() nicht funktionieren. Ich verwende das auch in einem Programm - ohne Probleme und Dein Code sieht
    eigentlich auch OK aus. Nebenbei: Wieso brauchst Du überhaupt in Deinem Projekt1 Parameter?

    Ich habe außerdem in der Hilfe zu spawnl nur zwei Einträge gefunden:

    Win 32 Programmer's Reference schrieb:

    BUG: Win32s 1.2 Bug List (at the Time of its Release)
    (...)
    - spawnl() does not pass parameters to an MS-DOS application.
    (...)

    Win 32 Programmer's Reference schrieb:

    BUG: Win32s 1.25a Bug List
    (...)
    - spawnl does not pass parameters to an MS-DOS-based application.
    (...)

    Gruß,

    Alexander


  • Mod

    Hallo

    also ich habe dein Beispiel ausprobiert

    Ergebnis = es kommt erfolgreich

    dein Fehler stammt woanderst her dein Code funktioniert !

    MfG
    Klaus



  • vielen dank klaus fürs testen .. ich hab jetzt das ganze nochmals mit einer neuen projektgruppe probiert und es hat schließlich auch gefunkt .. also, besten dank!
    jetzt werde ich den fehler in meiner anderen anwendung suchen!
    schönen nachmittag noch

    grüße und auch dank an dasd und alexander fürs helfen!

    hagbard


Anmelden zum Antworten