PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : File open



Steven
17.07.2003, 08:28:32
Hallo.
Ich möchte gerne eine Datei in einem Modul öffnen und bearbeiten. Wenn ich eine Variable wie folgt anlege: Public datei As File
und dann mit :
Dim datei2 As String
datei2 = datei.Open(Dateinamen(i), fsModeInput)
öffnen möchte bekomme ich immer folgende Fehlermeldung:
Variable ist undefiniert 'datei'

Wenn ich die gleiche Funktion in einer Form einfüge und das Steuerelement FILE auf die Form ziehe, funktioniert das.
Ist es nicht das gleiche ob ich eine Variable vom Typ FILE selber oder über das Steuerelement anlege?
Gruss Steven

matz75
17.07.2003, 09:39:32
Hallo Steven,

1. eVB kennt keine anderen Datentypen ausser Variant.
Ein Definition Dim strString As String ist daher nutzlos.
Ein Dim strString reicht völlig aus.

2. Der richtige Syntax lautet:
file1.open datei2, fsoModeInput

file1 ist dabei Dein FileSystemObject.

Gruss, Matz

Steven
17.07.2003, 11:13:22
Hallo Matz,

Ich programmier erst seit ein paar Tagen in eVB. Habe gedacht, das eVB auch andere Datentyp wie Integer und so weiter kennt.
Die Zeile:

file1.open datei2, fsModeInput

funktioniert, wenn ich diesen Aufruf in die form1.ebf Datei (mit File Steuerelement) einfüge.
Leider aber nicht wenn ich sie in ein Modul einfüge. Oder ich muss sie wie folgt erweitern:

Form1.file1.Open datei2, fsModeInput

Dann klappt es auch im Modul.
Ich würde aber gerne ein Modul haben, was nicht abhängig ist vom File Steuerelement.

Gruss Steven

matz75
17.07.2003, 12:04:11
hallo steven,

wenn Du das FSO zur Laufzeit erst erzeugen willst, musst Du das mit:


Dim objFile
Dim Datei2
Set objFile = CreateObject("FileSystemObject")
objFile.Open Datei2, fsoModeInput


Wenn Du das Objekt nicht mehr brauchst, dann:


Set objFile = Nothing


Das gibt den Speicher wieder frei.

Gruss, Matz.

P.S.: Im Ordner C:\Windows CE Tools\wce300\Pocket PC 2002\samples\evb sind ganz brauchbare Beispiele zu finden !

Steven
18.07.2003, 13:16:31
Hallo Matz.
Ich habe die Programmzeilen in mein Modul eingefügt und wollte es laufen lassen. Nun tritt ein neuer Fehler auf.
Fehlermeldung:
An error was encountered while running this programm: ActiveX component can't create object

Dieser Fehler tritt schon bei folgender Zeile auf:
Set objFile = CreateObject("FileSystemObject")

Hoffe du kannst mir weiterhelfen.
Gruss Steven

matz75
18.07.2003, 13:45:49
ja, dass muss auch so sein !

Aber sorry, dass hätte ich dazu schreiben sollen:

"FileSystemObject" ist nur als Sinnbild zu verstehen. Im Idealfall schreibst Du die Class ID rein. Findest Du in der Registry unter:
HKCR/FILECTL.FileSystem und lautet: {3F0C2794-5C3A-11D1-A717-00AA0044064C}.

Der Syntax wäre dann:
Set objFile = CreateObject("{3F0C2794-5C3A-11D1-A717-00AA0044064C}")

Oder Du nimmst den Descriptor:
Set objFile = CreateObject("FILECTL.FileSystem")

Der Descriptor ist natürlich einfacher, aber führt öftermal zu Problemen, wenn auf einem Rechner (meistens der auf dem entwickelt wird) ein Objekt mehr als einmal als Klasse registriert ist.

Denke auch daran, dass Du die benötigenten Objekte (in diesem Fall das FSO) auch auf dem PDA, bzw. Emulator kopiertst und registrierst. Sonst funktioniert da gar nichts !

Also: in eVB gehe auf Tools/Remote Tools > Control Manager und schiebe die Controls rüber, bzw. gib in den Projekteigenschaften (Project Properties) in der
Sektion "Update Components" an, dass Du Runtimefiles und Project Components immer updaten willst (Häckchen setzen) !

Ich hoffe, dass bringt Dich voran !

Gruss, Matz

Steven
18.07.2003, 14:28:03
Hallo Matz.
Danke erstmal für die viele Info.
Es funktioniert :-)
Ein schönes Wochenende wünsche ich dir.
Gruss Steven

matz75
18.07.2003, 15:30:01
@steven,

Dir auch ein schönes Wochenende und fröhliches codieren :)

Gruss, Matz