EXE kurios

Hallo Leute,
habe ein etwas eigenartiges Verhalten meiner VB6-Anwendung beobachtet:
In meinem laufenden Projekt sind eine Menge Daten in ein Textfile zu schreiben.
Über eine Funktion …() as Integer
Open … for Output
for
print
next
close
werden die Daten in diese Datei kopiert.
Solange ich das Programm in der Entwicklungsumgebung laufen lasse, funktioniert alles super. Nach der Erzeugung einer EXE ist diese Anwendung sehr unsicher. Die Daten werden aber nach wie vor noch in den Objekten gehalten und lassen sich modifizieren. Nur beim Schreiben auf die Festplatte geschieht NIX.
Habe schon in der Konfiguration des Compilers alle möglichen Optionen ausprobiert, jedoch ohne Erfolg.
Weiss jemand, was hier los ist? Woran habe ich nicht gedacht?

Vielen Dank

Tipo

Hi Tipo,

der Fehler wird wohl im Code stecken, den Du uns nicht zeigst.

Gruß, Rainer

No Problemo. Hier der Code der Funktion:

Public Function DateiSchreiben() As Integer

Dim Lauf As Integer

Form1.Label7.Caption = „Schreiben“
Form1.Label7.Refresh

Open „DCDArchiv.txt“ For Output As #1
For Lauf = 1 To 500
DoEvents 'aus Verzweifelung
Print #1, DCD(Lauf).Position & " @ " & DCD(Lauf).VolumeName & " @@ " & DCD(Lauf).Label & " @@@ " & DCD(Lauf).Inhalt
Next
Close #1
'Nur zur Kontrolle …
'MsgBox DCD(7).Position & " " & DCD(7).VolumeName & " " & DCD(7).Label & " " & DCD(7).Inhalt
'MsgBox „gespeichert und geschlossen“
DateiSchreiben = 1
End Function

… vermute, daß vielleicht zu viel Text gespeichert wird. Aber warum klappt es in der IDE ?
Tipo

Hi Tipo,

Public Function DateiSchreiben() As Integer

Dim Lauf As Integer

Form1.Label7.Caption = „Schreiben“
Form1.Label7.Refresh

Open „DCDArchiv.txt“ For Output As #1
For Lauf = 1 To 500
DoEvents 'aus Verzweifelung
Print #1, DCD(Lauf).Position & " @ " & DCD(Lauf).VolumeName &
" @@ " & DCD(Lauf).Label & " @@@ " & DCD(Lauf).Inhalt
Next
Close #1
'Nur zur Kontrolle …
'MsgBox DCD(7).Position & " " & DCD(7).VolumeName & " " &
DCD(7).Label & " " & DCD(7).Inhalt
'MsgBox „gespeichert und geschlossen“
DateiSchreiben = 1
End Function

… vermute, daß vielleicht zu viel Text gespeichert wird.
Aber warum klappt es in der IDE ?

Ich sehe erst mal nichts, was mir auffallen würde, das eine Fehler auslösen würde. Unklar ist mir natürlich, was DCD() ist, aber das ist sicher nicht wesentlich.

Das Einzige, was ich so nicht machen würde, ist die fehlende Pfadangabe beim Öffnen und #1. Du bist sicher, daß nichts geschrieben wird? Hast Du Windows mal nach der Datei suchen lassen? In welchen Pfad soll die Datei geschrieben werden? Wenn die Datei in den Pfad geschrieben werden soll, in dem auch die .exe steht, schreibt man …

Dim Pfad As String
Dim ff As Integer
Pfad = App.Path
If Right(Pfad,1) "\" Then
 Pfad = Pfad + "\"
End If

ff = FreeFile

Open "Pfad & DCDArchiv.txt" For Output As #ff
...

Versuche es mal so, eventuell findest du die geschriebene Datei einfach nicht, weil Du sie an der falschen Stelle suchst.

Gruß, Rainer

Hallo Rainer,

wie du schon richtig vermutest liegt der Fehler in der Pfadangabe.
An dem as #1 kann es nicht liegen, denn dann würde es unter VB auch nicht laufen :wink:

Ich vermute mal das der Pfad ein anderer ist und somit die Datei irgendwo auf den weiten des PC’s geschrieben sind :wink:

Aber mal was anderes, warum weist du den Pfad nicht wiefolgt zu

Pfad=IFF(Right(App.Path,1)="\",App.Path & "DeineDatei",App.Path & "\" & "DeineDatei")

@ Tipo

ändere mal deinen Code wie Rainer bereits geschrieben hat ab, dann sollte es laufen. Auch solltest du dir die Vorgehensweise merken, denn sonst schleichen sich schnell Fehler ein:wink:

MfG Alex

1 Like

Hi Alex,

Aber mal was anderes, warum weist du den Pfad nicht wiefolgt
zu

Pfad=IFF(Right(App.Path,1)="",App.Path &
„DeineDatei“,App.Path & „“ & „DeineDatei“)

ich kann mir das einfach nicht merken. :smile: Ich habe es schon so oft gelesen, aber wenn ich es brauche, kommt es mir nicht in den Sinn. Ich bemühe mich aber, das jetzt endlich mal zu verbessern. Danke für die Erinnerung!

Gruß, Rainer

Hallo Leute,

Pfad=IFF(Right(App.Path,1)="",App.Path &
„DeineDatei“,App.Path & „“ & „DeineDatei“)

Nur mal aus Interesse, verstehe ich die IFF-Funktion richtig?!
Variable = IFF Wenn, DannWert, SonstWert

Warum kennt mein VB6 diese Funktion nicht?

Gruß Simon

Hallo,

Pfad=IFF(Right(App.Path,1)="",App.Path &
„DeineDatei“,App.Path & „“ & „DeineDatei“)

Nur mal aus Interesse, verstehe ich die IFF-Funktion richtig?!
Variable = IFF Wenn, DannWert, SonstWert

Ja.

Warum kennt mein VB6 diese Funktion nicht?

Opps, da hat sich Alex vertippt. ‚IIF‘ :smile:

Gruß, Rainer

Hallo,

Warum kennt mein VB6 diese Funktion nicht?

Opps, da hat sich Alex vertippt. ‚IIF‘ :smile:

Funzt! Danke!

Gruß Simon

Hallo Alex, hallo Rainer,
Mensch, die Sache ist so peinlich…
Habe Eure Vorschläge dankend angenommen und umgesetzt.
Leider bin ich auf das Simpelste nicht gekommen. (Der Pfad war es!)
Tja, der Wald und die Bäume …

Vielen Dank Euch beiden.

Tipo