Announcement

Collapse
No announcement yet.

DLL und ParamStr(1) geht nicht mehr ?!?!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DLL und ParamStr(1) geht nicht mehr ?!?!

    Hallo.

    Ich nutze die MBT.dll um per Modbus auf Steuerungen zuzugreifen.
    Dazu habe ich vor eniger Zeit ein Beispielprojekt bekommen.
    Der Zugriff hat bislang sehr gut funktioniert.
    Nun habe ich weitere Änderungen am Programm vorgenommen und nichts geht mehr!
    Ich konnte den Fehler etwas eingrenzen:

    Code:
    if (ParamCount > 0)
        then StrPCopy(PChar(frm_Hauptform.EthernetAdresse), ParamStr(1));
    Mit dieser Zuweisung hat es bislang funktioniert.
    Doch nun ist "ParamCount = 0".

    Zwischenzeitlich habe ich das Projekt auf einen anderen Rechner übertragen.
    So das ich natürlich alle Pfade ändern mußte.
    Ich habe keine Ahnung warum "ParamCount = 0" ist,
    und wie ich das ändern kann (ParamCount := 1 geht jedenfalls nicht).

  • #2
    Wo definiert man Parameter einer Anwendung?

    Wo definiert man Parameter einer Anwendung?

    Comment


    • #3
      Beim Aufruf der EXE oder DLL

      xyw.exe Parameter1 Parameter2
      Christian

      Comment


      • #4
        Aber wo steht, dass z.B. Parameter1 ein String ist?

        Comment


        • #5
          In der Delphi Hilfe zu
          ParamStr(1)
          Christian

          Comment


          • #6
            Dort ist nur beschrieben, wie ich die Anzahl der Parameter ermittle,
            und wie ich die einzelnen Parameter auslese.
            Wie und wo lege ich fest, dass meine Anwendung einen weiteren Parameter hat.
            Wo werden die Parameter definiert/festgelegt/benannt? (wie auch immer)

            Comment


            • #7
              Wo werden die Parameter definiert/festgelegt/benannt? (wie auch immer)
              Wir drehen uns im Kreis -> Beitrag 3
              Christian

              Comment


              • #8
                Meine Anwendung wird gestartet min "Anwendung.exe".
                Beim Beutzen der Anwendung wird mit
                Code:
                StrPCopy(PChar(frm_Hauptform.EthernetAdresse), ParamStr(1));
                einem Parameter eine IP-Adresse zugewiesen.
                Dannach werden dort Daten ausgelesen und geschrieben.
                Dies geschieht per Modbus mit MBT.dll.
                Drückt der Nutzer auf eine weitere Schaltfläche, werden aus einer anderen Steuerung Daten gelesen (oder geschrieben).
                Dazu wird eine andere IP-Adresse übergeben, und die Verbindung neu initialisiert.

                Nach dem ich meine Anwendung auf einen anderen rechner getan habe
                und einige Änderungen vorgenommen habe, funktioniert es nicht mehr.

                Wenn ich vor der Zuweisung des "ParamStr(1)" die Anzahl der Parameter mit "if (ParamCount > 0) ..." prüfe, kommt 0 raus.
                Ich gehe nun davon aus, dass ich meiner grenzenlosen Unwissenheit die "Definition" des Parameters gelöscht habe.
                Da ich aber nicht weis, wo und wie man Parameter festlegt oder definiert, komme ich dem Fehler nicht auf die Spur.

                Comment


                • #9
                  In ParamStr werden die Übergabeparameter die das Programm beim Aufruf enthät abgelegt.

                  adsadas.ex p1 p2 p3

                  Hier wird das Programm mit 3 Parametern aufgerufen. Dabei gilt die Regel, dass die Parameter durch Leerzeichen getrennt werden. Ist ein Leerzeichen als Paramter erforderlich so sind " zu setzen.

                  Delphi legt diese Parameter im ParamStr Array ab. Dabei ist Paramter 0 immer der Pfad zur EXE/DLL
                  Christian

                  Comment


                  • #10
                    Delphi legt diese Parameter im ParamStr Array ab.
                    Wie wird dieses Array gebildet?
                    Wo ist dieses Array abgelegt?

                    Meine Anwendung wird nicht mit "Anwendung.exe Par1 Par2" aufgerufen. Die Zuweisung erfolgt mehrfach zur Laufzeit.

                    Nachtrag:
                    Mit "Label3.Caption := paramstr(0);" kann ich den Pfad anzeigen.
                    Zuletzt editiert von hgjank; 04.11.2010, 16:29. Reason: Nachtrag

                    Comment


                    • #11
                      Warum macht man zur Laufzeit eine Zuweisung in die Kommandozeilenargumente...

                      Comment


                      • #12
                        Wie wird dieses Array gebildet?
                        Wo ist dieses Array abgelegt?
                        Von Delphi - als Service nicht selbst die Kommandozeilenparameter parsen zu müssen


                        Nachtrag:
                        Mit "Label3.Caption := paramstr(0);" kann ich den Pfad anzeigen.
                        QED


                        Die Zuweisung erfolgt mehrfach zur Laufzeit.
                        Siehe Beitrag 11. Wer programmiert sowas?
                        Zuletzt editiert von Christian Marquardt; 04.11.2010, 17:34. Reason: Rechtschreibung
                        Christian

                        Comment


                        • #13
                          Wer programmiert sowas?
                          Ich bestimmt nicht freiwillig!
                          Das habe ich vom Hersteller so als Vorlage bekommen.
                          Bislang hat es auch fehlerfrei funktioniert.
                          Dann muss ich eben wieder von vorn anfangen.
                          Vielleicht komme ich so auf den Fehler, den ich reinverbessert habe!
                          Ich danke dennoch für die rege Anteilnahme.

                          Comment

                          Working...
                          X