Announcement

Collapse
No announcement yet.

Problem mit Programmauslieferung

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

  • Problem mit Programmauslieferung

    Hallo Leute,

    ich habe mit Delphi 6 Profesional ein Programm geschrieben, in dem ich in verschiedenen Verzeichnissen auf Textdateien zugreifen muß. Um die Orientierung im Programm nicht zu verlieren, erzeuge ich mir eine Variable nach folgendem Muster - ProgrammPfad:=Application.ExeName.
    Das funktioniert so lange, wie auch die Delphi Entwicklungsumgebung auf dem Rechner installiert ist.
    Ich habe eine Installation mit dem InstallShield erzeugt, es funktioniert soweit ganz gut, nur die Funktion Application.ExeName liefert keinen Wert zurück, es kommen aber auch keine Fehler.
    Welche DLL's muß ich noch mit ausliefern, oder hat jemand eine andere Idee?

  • #2
    Hi,

    mit Application.ExeName bekommst du lediglich den Pfad MIT programmname. Du must dann wohl noch den Pfad extrahieren:
    Programmpfad:=extractFilepath(Application.ExeName) .
    Ich habe damit auch schon gearbeitet und auf anderen Rechnern ohne Delphi klappt es.
    Ich habe D5 P.
    Ich hoffe, das hilft.

    Viele Grüße
    Joh

    Comment


    • #3
      Hallo,

      versuchs mal mit <b>ProgrammPfad := ParamStr(0);<b>. Das liefert das gleiche Ergebnis wie ExeName und funktioniert bei mir immer.

      Ciao Wolfgan
      In God we trust - all others pay cash!

      Comment


      • #4
        Hallo John und Wolfgang,

        vielen Dank für die Tips, beide Varianten funktionieren super.
        Was mich trotzdem noch etwas verunsichert ist, warum bleibt meine
        Variable bei der Zuweisung von Application.ExeName auf einem
        neu installiertem System leer.
        Liegt es etwa daran, dass ich auf WINXP programmiere und auf
        WIN98SE / WINME teste ?

        Gruß Uw

        Comment


        • #5
          Hallo Uwe,<p>
          bist Du dir ganz sicher, dass Deine Variable leer bleibt? Ich vermute mal, Du suchst hier am falschen Ende. Unsere Anwendung nutzen sehr oft <b>extractFilepath(ParamStr(0))</b> und wir programmieren auch mit D6.02 und wir haben auf unseren frischen Testsystemen (Win95, 98, NT, XP) noch nie das Problem gehabt, das ExeName oder ParamStr(0) nichts zurückgibt. Vielmehr denke ich, dass Dein Schluss irgenwie einfach falsch sein könnte. Wie kommst Du drauf, das Application.exename leer zurückgibt? Speicherst Du den Wert irgendwo ab? Gibst Du den Wert irgendwo aus?<p>
          Schöne Grüße, Mario Noac
          Schöne Grüße, Mario

          Comment


          • #6
            Hallo Mario,

            nachdem ich bei einer Testinstallation (Win98SE) auf Probleme mit meiner Pfadverwaltung gestoßen bin, und den Fehler im Debugmode in der Entwicklungsumgebung nicht nachvollziehen konnte, habe ich einen einfachen Versuch gemacht:<BR>
            <B>var ProgrammPfad:String;<BR>
            ProgrammPfad:=Application.ExeName;<BR>
            Label.Caption:=ProgrammPfad.<BR></B>
            Auf einem System mit installiertem D6P wird im Label der komplette Pfad + EXE Datei angezeigt. Auf einem neu installiertem System <B>nichts</B>.
            Das Beispiel vom John (extractFilepath(Application.ExeName) und vom
            Wolfgang (extractFilepath(ParamStr(0)) zeigt mir wiederum den richtigen Pfad natürlich ohne EXE Datei auch auf einem neu installiertem System an. Ich werde es auch so nutzen, trotzdem bin ich etwas irretiert, oder kann man <B>MyVariable:=Application.ExeName</B> so pur nicht nutzen?

            Gruß Uw

            Comment


            • #7
              Hallo Uwe,<p>
              ein solches Verhalten von Delphi-Anwendungen ist mir nicht bekannt. Delphi installiert zwar verschiedenste bpl-Dateien ins Windows-Verzeichnis, die werden aber nur benötigt, wenn Deine Anwendung mit Packages funktioniert! Baut sie etwa auf den Packages von Delphi auf? Dann hätte ich unter Umständen eine Erklärung. Ich könnte mir vorstellen, dass InstallShield nicht die gleiche Version der VCL-Packages vertreibt, wie sie Delphi installiert. Das würde dann aber noch nicht zwingend erklären, warum ein zusätzliches ExtractFilePath das Problem behebt!<p>
              Schöne Grüße, Mario Noac
              Schöne Grüße, Mario

              Comment


              • #8
                Hallo Uwe,

                möchtest Du mit deiner Methode einfach nur das Pogramm-Startverzeichnis festellen, wenn ja, dann nehme doch einfach beim create deine hauptformular
                <pre>
                globale variable !!!
                var start_verzeichnis:string;
                ...
                ...
                procedure tprogramm.hauptformularcreate(sender:tobject);
                begin
                start_verzeichnis:=currentdir();
                ..
                end;
                </pre>

                dann funzt das auch, benutz ich bei meinen programme nur !

                gruß
                marti

                Comment


                • #9
                  @Martin: Das ist aber riskant. Wenn Deine Anwendung eine Verknüpfung bekommt und ein fleißiger Anwender das Arbeitsverzeichnis der Verknüpfung ändert, sollte CurrentDir auf einmal nicht mehr das Verzeichnis der Anwendung sein!<p>
                  Grüße, Mario Noac
                  Schöne Grüße, Mario

                  Comment


                  • #10
                    Moin Zusammen,<br>
                    <br>
                    ausserdem kann sich das Arbeitsverzeichnis,z.B., noch durch Dateiauswahldialoge ändern.<br>
                    <br>
                    @Uwe:<br>
                    Da D6 ja nicht gerade fehlerfrei sei soll:<br>
                    Hast Du mal hier geschaut: http://buglist.jrsoftware.org/indexpag.htm<br>
                    Eine "schöne" Sammlung von Delphi Bugs.<br>
                    <br>
                    Ciao<br>
                    Chri

                    Comment

                    Working...
                    X