Programm Pfad erkennen ?

Moin,
gibt es die möglichkeit ein Programmpfad automatisch zu erkennen ?
ZBSP. Ich habe eine List.exe die auf eine list.txt zugreifft.
die List.txt ist aber in der list.exe mit einem Festen Pfad angegeben funktioniert also nur wenn diese mit der exe im Ordner c:\List\ liegt.
Nun möchte aber Person X das Programm in den Ordner Programme kopieren und zack nix geht mehr da der Pfad zur List.txt nicht mehr stimmt.

hilfe

mfg joe

Hallo,

APP.PATH

Gibt dir zur Laufzeit den Pfad zur .EXE an.

MfG Peter(TOO)

Jo,

mit msgbox App.Path & „\CTDI.txt“
bekomme ich den Richtigen Pfad angezeigt.
Wenn ich aber damit arbeiten möchte:
Open App.Path & „\CTDI.txt“ For Input As #ff

geht das nicht :confused: ?

mfg joe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Joe,

kann es sein, daß App.Path ein Laufwerk ist? Dann gibt es Probleme.

Das hier läuft immer!

 Dim ff As Integer
 Dim pfd As String
 Dim na As String

 pfd = App.Path
 If Right(pfd, 1) "\" Then pfd = pfd & "\"

 na = pfd & "CTDI.txt"
 ff = FreeFile
 Open na For Input As #ff
 ...

Du darfst Dich nicht darauf verlassen, daß App.Path am Ende keinen Backslash enthält, weil das nicht zuverlässig immer so ist.

Gruß, Rainer

Hi,
komisch in der MSGbox paast es alles: aber File not found beim auslesen… ordner lauten „D:\FF Tools\FF Menü\CTDI.txt“
a ber warum.

 pfd = App.Path
 If Right(pfd, 1) "\" Then pfd = pfd & "\"
 na = pfd & "CTDI.txt"
 MsgBox na

 textcheck = Text1.Text
 Open na For Input As #ff

mfg joe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Joe,

komisch in der MSGbox paast es alles: aber File not found beim
auslesen… ordner lauten „D:\FF Tools\FF Menü\CTDI.txt“
a ber warum.

pfd = App.Path
If Right(pfd, 1) „“ Then pfd = pfd & „“
na = pfd & „CTDI.txt“
MsgBox na

textcheck = Text1.Text
Open na For Input As #ff

Das ist so richtig, da hast Du einen anderen Fehler.

Stimmt der Pfad?
Ist die Datei wirklich da?
Tippfehler beim Dateinamen oder der Endung?

ich habe es gerade mal gestetet und solche Pfadnamen angelegt, weil ich den Umlaut im Verdacht hatte, aber …

Option Explicit

Private Sub Command1\_Click()
 Dim pfd As String
 Dim na As String
 Dim ff As Integer
 Dim zl As String
 ff = FreeFile
 pfd = "C:\FF Tools\FF Menü\"
 na = pfd + "Test.txt"
 Open na For Input As #ff
 Input #ff, zl
 Close #ff
 Text1.Text = zl
End Sub

(Nicht extra kompiliert … ) Das läuft!

Dein Programm geht davon aus, daß es im selben Verzeichnis liegt, wie die Textdatei. Ist das so? Liegt die .exe, die Du startest wirklich im selben Verzeichnis wie die Daten?

Gruß, Rainer

Nachtrag
Hi Joe,

leicht geändert um reale Bedingungen zu schaffen:

Option Explicit

Private Sub Command1\_Click()
 Dim pfd As String
 Dim na As String
 Dim ff As Integer
 Dim zl As String
 ff = FreeFile
 pfd = App.Path
 If Right(pfd, 1) "\" Then pfd = pfd + "\"
 na = pfd + "Test.txt"
 Open na For Input As #ff
 Input #ff, zl
 Close #ff
 Text1.Text = zl
End Sub

kompiliert, in das selbe Verzeichnis wie die Textdatei gelegt, .exe gestartet, läuft.

Ich habe noch bemerkt, daß ich

ff = FreeFile

nicht gesehen habe, das steht dann weiter oben, hast Du nicht mit kopiert, oder?

Gruß, Rainer

Hallo Rainer, Joe,

@Joe: Werden die Daten in der Text Datei, während des Proggs geaendert? Wenn ja erklärt es das du ein seperates Files brauchst. Wenn nicht, warum packst du es dann nicht als Resource ins Progg ?

@Rainer: Ich weiss jetzt nicht aus dem Stehgreif. Aber koennte es evtl. sein das das Leerzeichen im Pfad Probleme macht?

@ Joe

Mal ein kleines Demo

Option Explicit
'Prüfen ob File existiert
Public Function FileExists(sFile As String) As Boolean
On Error GoTo ErrHandler
Dim I As Long
 FileExists = True
 I = FileLen(sFile)
 On Error GoTo 0
 Exit Function
ErrHandler:
 FileExists = False
 On Error GoTo 0
End Function

'So koennte dann der Zugriff ausschauen 
Dim sFile As String
Dim FNr As Byte
sFile = IIf(Right(App.Path, 1) = "\", App.Path & "DeineDatei.txt", App.Path & "\" & "DeineDatei.txt")
If Not (FileExists(sFile)) Then
 'File not found
Else
 FNr = FreeFile
 Open sFile For Input As #FNr
 'Deine Anweisungen
 close #FNr
End If

MfG Alex

Hi Alex,

@Rainer: Ich weiss jetzt nicht aus dem Stehgreif. Aber koennte
es evtl. sein das das Leerzeichen im Pfad Probleme macht?

die Leerzeichen und den Umlaut hatte ich auch im Verdacht, deshalb habe ich die Pfade bei mir genau so angelegt … klappt. Selbst das ‚ü‘ stört nicht. Nein, an den Pfadnamen liegt es nicht.

Gruß, Rainer

Hallo Rainer,

danke für die Info :smile: So lernt man immer etwas dazu :smile:
Aber mal was anderes. Kennst du dich mit usercontrols aus?

MfG Alex

Hi Alex,

danke für die Info :smile: So lernt man immer etwas dazu :smile:
Aber mal was anderes. Kennst du dich mit usercontrols aus?

ein wenig. Ich habe mir ein .OCX für eine Telnetanwendung gebastelt.

Mach doch einen neuen Thread auf, das ist für das Archiv schöner. :smile:

Gruß, Rainer

Joa, meine Schuld …
ich könnte schwören das die MSGBOX heute Mittag den richtigen Ordner angezeigt hat … nun zeigt sie Richtigerweise in den Ordner wo das Projekt drin ist … Nach dem Compilieren in den Richtigen ORdner läuft alles …

Ich danke euch.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Rainer,
Was macht deine Telnetanwendung ? Das läuft mit MSCOM oder ?
Ich versuche nebenbei von einem Nokia Handy AT Befehle auszuwerten.
Da geht im HyperTerminal aber wegen Treiberproblemen nicht mit MScomm
So steht es zumindest im MSD

Wenn es Interessant wird kommt der Thread :stuck_out_tongue:

mfg joe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Joe,

Was macht deine Telnetanwendung ?

ein Pogramm auf einem Unix-Server ‚bedienen‘. Es werden Daten ‚eingegeben‘ und ich bekomme Detailinformationen zurück.

Das läuft mit MSCOM oder ?

Nein, komplett mit API, den Code dazu habe ich bei PlanetSourcecode gefunden. Den Parser für VT100 hätte ich selbst nicht hin bekommen, ich habe die dazu nötigen Informationen nicht gefunden.

Ich versuche nebenbei von einem Nokia Handy AT Befehle
auszuwerten.
Da geht im HyperTerminal aber wegen Treiberproblemen nicht mit
MScomm
So steht es zumindest im MSD

Darüber weiß ich nichts. :frowning: Wenn Du aber Telnet mit VT100 verwenden kannst, kann Dir der ursprüngliche Code helfen.
Kommst Du mit einem ‚normalen‘ Telnetclient mit VT100/VT50 auf das Handy?

Mein .OCX hilft Dir da nicht, das ist komplett auf meine Bedürfnisse zugeschnitten.

Wenn es Interessant wird kommt der Thread :stuck_out_tongue:

Ja. :smile:

Gruß, Rainer

hmm ich finde dort nur A-Term (MSCOMM) hast du noch den namen von dem Projekt oder vom COde . oder sogar einen Link :frowning:

Danke , mfg joe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]