Archiv verlassen und diese Seite im Standarddesign anzeigen : Text aus Externen Dateien einlesen
-=[CrYpT]=-
18.02.2002, 20:10
Moin,
ich weiss nicht mit welchem befehl ich daten, sprich text aus externen datein wie cfg oder normalen textdatein auslesen kann. wäre nett wenn mir da jemand irgend einen tip geben könnte.
so far
Crypt
am einfachsten machst du das mit open
Dim strFile As String
Open "c:\autoexec.bat" For Input As #1
Do While Not EOF(1)
Input #1, Data
strFile = strFile & Data & vbCrLf
Loop
Close #1
MsgBox strFile
so long
cYrus
fabian ackle
18.02.2002, 20:49
das geht folgendermassen:
open "dateiname.txt" for input as #1
do until eof(1)
input #1, var
text1.text = text1.text & var & vbcrlf
loop
close #1
ich hoffe es stimmt, habe es nicht ausprobiert
zur erklärung:
open "dateiname.txt" for input as #1
öffnet die angegebene datei zum einlesen als #1
do until eof(1)
loop
eine schlaufe, welche so lange geht bis das ende der erreicht ist (eof -> EndOfFile)
input #1, var
liest aus der datei ein und speichert es in die variable var
text1.text = text1.text & var & vbcrlf
schreibt den eingelesenen text ind die textbox1
hth
dubious
oha, da war einer schneller :D
Kleine Anmerkung noch:
Nicht Input #... verwenden, sondern Line Input #.... Damit ist sichergestellt, dass immer eine komplette Zeile (bis zum CrLf] aus einer Datei gelesen wird. Wenn ein Komma in der Zeile steht, unterbricht "Input" sonst!
Gruss,
Mimo
-=[CrYpT]=-
19.02.2002, 16:13
ok vielen dank ich mach mich gleich ran :D
habe das gleiche problem will auch einen text einlesen aber am code stimmt was nicht , bei mir zeigt vb an syntax stimmt nicht :confused:
was ist denn da falsch ???
open "dateiname.txt" for input as #1
TommySZB
01.05.2004, 15:32
habe das gleiche problem will auch einen text einlesen aber am code stimmt was nicht , bei mir zeigt vb an syntax stimmt nicht :confused:
was ist denn da falsch ???
open "dateiname.txt" for input as #1
Es ist mir ein Rätsel wie das mit dem & laufen soll. Das hab ich so noch nie in VB gesehen *gg*, ist aber vielleicht auch Versionsabhängig.
Ich lese so aus (der Code läuft so täglich mit Access 97):
dim Datei, Zeichen as String
Open Datei For Input As #1
Zeichen = Input(1, #1)
das liest immer ein Zeichen aus, was ich für mit Semikola getrennten formatierten Text benötige.
Gruss
Hi Junx,
ich würde dass File nicht zeilenweise lesen sondern die ganze Datei auf einen Rutsch in den Speicher holen und dann den String parsen, das geht viel schneller ;)
Der Code könnte so aussehen:
Dim intFileNr As Integer
Dim sDateiInhalt As String
intFileNr = FreeFile
Open sFullPath For Input As #intFileNr
sDateiInhalt = Input(LOF(intFileNr), #intFileNr)
Close #intFileNr
Den Code einfach in ne Funktion packen und den Dateiinhalt (sDateiInhalt) zurückgeben. sFullPath ist der Parameter der Funktion in dem der Pfad zur zu lesenden Datei steckt.
OK, mit sehr großen Dateien sollte man evtl. anders vorgehen, aber bis 1 MB Dateigröße ist die Vorgehensweise gut. Die Filegröße könnte man vorab per:
Dim lngFileSize As Long
lngFileSize = FileLen(sFullPath)
noch abprüfen.
HTH
Cisab
immer noch ein problem , wie baue ich den pfad ein wo eingelesen werden soll
dateiname.txt <== :confused: sollte dann in der text1 erscheinen
immer noch ein problem , wie baue ich den pfad ein wo eingelesen werden soll
dateiname.txt <== :confused: sollte dann in der text1 erscheinen
Hähhh, what????
Endschuldige Uzge, aber die Gabe zum Hellsehen wurde mir von meinem Schöpfer leider vorenthalten, daher weiß ich nicht wirklich was Du meinst!!
Falls Du den Pfad irgendwo ausgeben möchtest, z.B. in einer Textbox, so machst du das wie folgt:
Text1.text = sFullPath
Falls das nicht deine Frage war kann ich nur weiter raten und denke das Dir vieleicht die Sache mit dem Übergabeparameter nicht ganz klar ist. Wenn dem so ist dann hier ein wenig Beispiel:
Public Funcion readFile(byVal sFullPath as string) as string
Den Rückgabewert holst Du dir mit:
sFileContent = readFile(myFilePath)
Tschuldige falls ich neben der Spur lande, aber ich kann Dir wie bereits geschrieben nicht so ganz folgen ...
Cisab
sorry aber verstehe das immer noch nicht ,hier der code bringt aber fehler , geht einfach nicht :mauer:
Private Sub cmdEinlesen_Click()
Dim strFile As String
Dim sDateiInhalt As String
Text1.Text = sFullPath <== hier sollte dann das eingelesene angezeigt werden in feld Text1.Text
sDateiInhalt = readFile("C:\xxxText.txt") <==xxxText.txt sollte eingelesen werden,hier zeigt er schon einen fehler bei readFile
intFileNr = FreeFile
Open sFullPath For Input As #intFileNr
sDateiInhalt = Input(LOF(intFileNr), #intFileNr)
Close #intFileNr
End Sub
TommySZB
02.05.2004, 20:43
sorry aber verstehe das immer noch nicht ,hier der code bringt aber fehler , geht einfach nicht :mauer:
Private Sub cmdEinlesen_Click()
Dim strFile As String
Dim sDateiInhalt As String
Text1.Text = sFullPath <== hier sollte dann das eingelesene angezeigt werden in feld Text1.Text
sDateiInhalt = readFile("C:\xxxText.txt") <==xxxText.txt sollte eingelesen werden,hier zeigt er schon einen fehler bei readFile
intFileNr = FreeFile
Open sFullPath For Input As #intFileNr
sDateiInhalt = Input(LOF(intFileNr), #intFileNr)
Close #intFileNr
End Sub
Wo hast du denn das ReadFile her?
Die letzten 4 Zeilen Code müssten dann ne seperate Routine namens ReadFile darstellen sonst gehts natürlich nicht.
Gruss
ok geht habe einen anderen code genommen mit dem komme ich nicht klar,
trotzdem danke für euere hilfe
ok geht habe einen anderen code genommen mit dem komme ich nicht klar,
trotzdem danke für euere hilfe
Hi uzge,
sorry dass ich das nun frage, bist Du dir wirklich sicher das Du programmieren möchtest??
Wenn ja dann solltest Du ein wenig an den Grundlagen arbeiten, z.B. was sind Prozeduren, Funktionen und Parameter.
Falls Du nicht programmieren möchtest vergiss das eben genannte einfach wieder.
Dabei wäre es so einfach gewesen:
Option Explicit
Private Sub cmdEinlesen_Click()
Dim sDateiInhalt As String
Text1.Text = "C:\xxxText.txt"
sDateiInhalt = readFile(Text1.Text)
' Und damit man sieht das etwas geladen wurde Ausgabe in ner 2. Textbox
Text2.Text = sDateiInhalt
End Sub
Public Function readFile(ByVal sFullPath As String) As String
Dim intFileNr As Integer
Dim sDateiInhalt As String
intFileNr = FreeFile
Open sFullPath For Input As #intFileNr
sDateiInhalt = Input(LOF(intFileNr), #intFileNr)
Close #intFileNr
readFile = sDateiInhalt
End Function
TommySZB
03.05.2004, 10:19
Hi uzge,
sorry dass ich das nun frage, bist Du dir wirklich sicher das Du programmieren möchtest??
Wenn ja dann solltest Du ein wenig an den Grundlagen arbeiten, z.B. was sind Prozeduren, Funktionen und Parameter.
Falls Du nicht programmieren möchtest vergiss das eben genannte einfach wieder.
Dabei wäre es so einfach gewesen:
Option Explicit
Private Sub cmdEinlesen_Click()
Dim sDateiInhalt As String
Text1.Text = "C:\xxxText.txt"
sDateiInhalt = readFile(Text1.Text)
' Und damit man sieht das etwas geladen wurde Ausgabe in ner 2. Textbox
Text2.Text = sDateiInhalt
End Sub
Public Function readFile(ByVal sFullPath As String) As String
Dim intFileNr As Integer
Dim sDateiInhalt As String
intFileNr = FreeFile
Open sFullPath For Input As #intFileNr
sDateiInhalt = Input(LOF(intFileNr), #intFileNr)
Close #intFileNr
readFile = sDateiInhalt
End Function
Cisab hat recht, das mit den Prozeduren sagte ich ja schon oben ;)
Am besten kaufst d udir ein gescheites Einsteigerbuch.
Gruss
danke cisab das hast du mal seher gut erklärt , ja klar will ich programmieren lernen , aber in meinem alter ist das nicht mehr so leicht ;)
TommySZB habe mir gleich 3 Einsteigerbücher gekauft sind leider noch nicht da ,will aber trotzdem schon ein wenig anfangen zu coden .
freut mich das ihr den code auch sehr gut erklärt hier auf dem board ,und das ihr auch wollt das mann es versteht warum und weshalb ,
macht weiter so ,so macht es spass , :p
danke cisab das hast du mal seher gut erklärt , ja klar will ich programmieren lernen , aber in meinem alter ist das nicht mehr so leicht ;)
Jünger werden wir alle nicht, ich hab vorne auch schon ne 4 stehen, nur damit Du siehst das hier nicht nur die Youngster unterwegs sind.
Und das mit dem Coden wird schon, wenn Du etwas nicht verstehst dann frag einfach, die meisten hier im Forum helfen gern ...
Auch mit etwas vollständigeren Beispielen, doch man hat nicht immer ne IDE auf um schnell mal den Code dort rein zu klimpern, manchmal muß das Textfeld des Forums genügen, und dann sind die Beispiele leider
1. nicht getestet und
2. meist nich vollständig.
bis denne
Cisab
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.