gestartetes Prog zeigt übergeben Parameter nicht an



  • Hallo,

    das eine Teilprogramm ist in VB und das Andere in C++ mit dem C++ Builder programmiert.
    Vom VB-Programm aus wird das Andere gestartet und entsprechend ein Parameter mit übergeben.
    Anhand dieses Parameters zeigt das C++ Prog Daten in DBEdit-Feldern an, die verändert werden können. Mit "Speichern" oder "Abbruch" wird das C++ Prog entsprechend beendet und der Anwender arbeitet in dem VB Projekt weiter.

    Wird das C++ Prog nun vom C++ Builder, Kommandozeile oder von einem anderen C++ Prog aus gestartet, so übernimmt er die mitgegebenen Paramter und arbeitet Ordnungsgemäß.

    Von VB aus gestartet werden die Parameter mit übergeben und verarbeitet(bereits geprüft), aber nicht angezeigt. 😞 Auch sind die DBEditfelder nicht mehr editierbar.

    Weiß jemand weiter?
    Da das VB Prog von einem Bekannten entwickelt wird, dauern eventuell Antworten auf Fragen von Euch, da ich jene erst weiter leiten muss. Ich habe seinen Quelltext nicht.

    Gruß
    Biker78



  • Hallo

    und ohne Quelltext läßt sich dazu aber nichts sagen. Das ist (laut deinen Aussagen) kein Problem der Parameterübergabe, sondern der internen Programmlogik und/oder des VB-Programms. Schreibt eine Loggingfunktion, die den Ablauf und die Kenndaten des Programms in eine Datei schreibt. Dann könnt ihr sehen, wie sich das Programm beim Aufruf duch VB verhält.

    bis bald
    akari



  • void __fastcall TForm::FormShow(TObject *Sender)
    {
        //Parameter testen
        TLocateOptions tmpLO;
    
        if((ParamStr(1) == "")||(ParamStr(1) == "0"))
        {
            //kein Parameter
         ShowMessage("No ID delivered!");
         Application->Terminate();
         return;
        }
        else
        {
            try
            {
                ParamStr(1).ToInt();
            }
            catch(...)
            {    //Parameter <> Integer
                ShowMessage("ID has to be an Integer!");
                Application->Terminate();
                return;
            }
        }
              //Parameter uebergeben
              ID = ParamStr(1).ToIntDef(0);
    //        ShowMessage(AnsiString(ID));
    
            DataModule1->ADODSSLAErfassung->Active = false;
            DataModule1->ADODSSLAErfassung->Parameters->ParamByName("ID")->Value = ID;
            DataModule1->ADODSSLAErfassung->Active = true;
            //ShowMessages fuer Fehlerdiagnose  auskommentieren
    //       ShowMessage("Param = " + AnsiString(ID));
    //       ShowMessage("ADODSSLAErfassung->FieldByName(\"ID\")->AsString = " + DataModule1->ADODSSLAErfassung->FieldByName("ID")->AsString);
    
            if (DataModule1->ADODSSLAErfassung->RecordCount < 1 )
            {
                index = 1;
                DataModule1->ADODSSLAErfassung->Append();       //neuer Eintrag
                DataModule1->ADODSSLAErfassung->FieldByName("ID")->AsInteger = ID;
    //         ShowMessage("Append mit TitelID = " + AnsiString(ID));
    
                          //Felder vorbelegen
                DataModule1->ADODSSLAErfassung->FieldByName("Tag")->Value = "1";
                DataModule1->ADODSSLAErfassung->FieldByName("TageSeitWorkAble")->Value = 0;
                DataModule1->ADODSSLAErfassung->FieldByName("Description")->Value = "NULL";
                DataModule1->ADODSSLAErfassung->FieldByName("Aktiv")->Value = 0;
    
              } //endif
    
    }
    

    Das war das kleine C++ Prog und das ist eigentlich auch schon alles, was es können muss. Ich sehe die Probleme nicht bei diesen paar Zeilen. Was meint Ihr?



  • Als Ergänzung muss ich noch sagen, die DBEdit-Felder haben als "DataSource" das DataModule1->DSSLAErfassung und dann als "DataField" das dazu gehörenden Feld in der Datenbank, z.B. ID über den ObjektInspektor zugewiesen bekommen.

    Gruß
    Biker78



  • Hallo,
    habe dieses Programm abgewandelt und die Daten aus den DataSources ausgelesen und in normale EditFelder geschrieben etc.

    Habe festgestellt, wenn ich ein zweites Formular öffne und dort DBEditFelder einfüge, die auch auf die oben verwendeten DataSources zugreifen, die Infos hier anzeigen. 😕
    Setze ich sie wieder in das Hauptformular -> nichts 😡 Wieso?

    Gruß
    Biker78


Log in to reply