Textdatei in 2dim-Array [erledigt]
Moderator: Moderatoren
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Textdatei in 2dim-Array [erledigt]
Hallo,
ich möchte eine Textdatei in ein 2dim-Array konvertieren um diese dann weiterzuverarbeiten.
In jeder Zeile der Textdatei können zwischen 1 und 12 mit Komma getrennte Werte stehen.
Die Datei ist UTF8-kodiert (von einem Android-Gerät erzeugt).
Ich müsste die Datei praktisch zeilenweise bearbeiten, und die jeweilige Zeile nochmal zerlegen.
Ich habe versucht das Beispiel von Hubert in der Wissensbasis anzupassen komme aber nicht weiter.
ich möchte eine Textdatei in ein 2dim-Array konvertieren um diese dann weiterzuverarbeiten.
In jeder Zeile der Textdatei können zwischen 1 und 12 mit Komma getrennte Werte stehen.
Die Datei ist UTF8-kodiert (von einem Android-Gerät erzeugt).
Ich müsste die Datei praktisch zeilenweise bearbeiten, und die jeweilige Zeile nochmal zerlegen.
Ich habe versucht das Beispiel von Hubert in der Wissensbasis anzupassen komme aber nicht weiter.
Zuletzt geändert von peternmb am Sa, 14. Apr 2012 18:12, insgesamt 1-mal geändert.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Textdatei in 2dim-Array
Hallo Peternmb,
Kannst Du eine Beispieldatei als Download zur Verfuegung stellen?
Uli
Kannst Du eine Beispieldatei als Download zur Verfuegung stellen?
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: Textdatei in 2dim-Array
nein, weder nochWolfgang Ciriack hat geschrieben:Benutzt du eXPress++ oder die ToolsIII ?
Als Anlage eine Musterdatei.
Der Aufbau ist eigentlich immer gleich, die ersten 12 Zeilen beinhalten jeweils nur einen Wert.
Ab Zeile 13 kommen x Zeilen, in denen jeweils 11 numerische Werte, durch Kommas getrennt stehen.
Die Anzahl dieser Zeilen steht in Zeile 12 (27-48).
Vielleicht sollte ich das ganze in 2 Arrays aufteilen (die einfachen Zeilen 1-12 als seperates Array).
Irgendwie habe ich da keinen richtigen Plan.
- Dateianhänge
-
- A_Test_1.txt
- UTF8
- (1.21 KiB) 162-mal heruntergeladen
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Textdatei in 2dim-Array
Also, wenn ich die Datei öffne, dann sehe ich da keine "Zeilen".
Ich sehe nur am Anfang ein paar Trenner ("0"), dann nur noch Werte mit Komma getrennt.
Soll es denn ein Zeilentrennzeichen geben ?
Ich sehe nur am Anfang ein paar Trenner ("0"), dann nur noch Werte mit Komma getrennt.
Soll es denn ein Zeilentrennzeichen geben ?
Viele Grüße
Wolfgang
Wolfgang
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Textdatei in 2dim-Array
Hallo Wolfgang,Wolfgang Ciriack hat geschrieben:Also, wenn ich die Datei öffne, dann sehe ich da keine "Zeilen".
wie unter Linux üblich ist das Trennzeichen 0A und nicht wie bei Windows 0D 0A .
0A ist auch in der Datei enthalten.
Sicher ist es das einfachste, die gesamte Datei in eine MEMO-Variable einzulesen und anschließend mit Hilfe von At( chr(10),cMemo ) die Zeilen in ein Array zu kopieren.
Reicht das als Hilfe, Peter?
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Textdatei in 2dim-Array
Genau, Linux nutzt chr(10) (0x0A) statt chr(13)+chr(10) wie in Windows üblich. *** PS: verbessert ***
Was am einfachsten ist, hängt davon ab, wo du die Schnittstelle einfacher anpassen kannst.
Ich habe bei mir in Android (Basic4Android) per definition CRLF Zeilentrenner und ANSI Zeichensatz eingestellt. => Windows keine Probleme
Wenn das nicht geht, kannst du entweder die Datei komplett einlesen und umsetzen und danach aufteilen
Pablos OT4XB hat einige nützliche Stringfunktionen (UTF8 nach ANSI und Tokenizer) hier in der Wissensbasis gibt es auch einige.
http://www.xbaseforum.de/viewtopic.php?f=16&t=4268
hat z.B. auch einen tokenizer, die TxtFile2Array(cDateiName,cConvert) Funktion kann man leicht anpassen wenn man CRLF durch chr(10) ersetzt (Namen ändern !)
#define CRLF chr(13)+chr(10)
Was am einfachsten ist, hängt davon ab, wo du die Schnittstelle einfacher anpassen kannst.
Ich habe bei mir in Android (Basic4Android) per definition CRLF Zeilentrenner und ANSI Zeichensatz eingestellt. => Windows keine Probleme
Wenn das nicht geht, kannst du entweder die Datei komplett einlesen und umsetzen und danach aufteilen
Code: Alles auswählen
sLinux := memoread(...)
sWinUTF8 := strTran(sLinux, chr(10), chr(13)+chr(10))
sAnsi := Utf8ToAnsi()
Dann Aufteilen ...
http://www.xbaseforum.de/viewtopic.php?f=16&t=4268
hat z.B. auch einen tokenizer, die TxtFile2Array(cDateiName,cConvert) Funktion kann man leicht anpassen wenn man CRLF durch chr(10) ersetzt (Namen ändern !)
#define CRLF chr(13)+chr(10)
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Textdatei in 2dim-Array
chr(10) und nicht chr(13)brandelh hat geschrieben:Genau, Linux nutzt chr(13) statt chr(13)+chr(10) wie in Windows üblich.
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Textdatei in 2dim-Array
Stimmt, 0x0A => chr(10) ... später habe ich es wohl noch bemerkt ... ich verbessere es mal gleich oben damit es niemanden verwirrt.
Gruß
Hubert
Hubert
-
- UDF-Programmierer
- Beiträge: 66
- Registriert: Fr, 29. Feb 2008 20:53
- Wohnort: Furtwangen
Re: Textdatei in 2dim-Array
Hallo Peternmb,
hab es mal mit Deiner Testdatei probiert,
ohne weitere Konvertierung.
Hubert war schneller !!!!
hab es mal mit Deiner Testdatei probiert,
Code: Alles auswählen
Function Main()
// konvertiere String in Textdatei mit Zeilenschaltung
Local cString
// Lese Datei in Variable
cString := MemoRead("A_Test_1.txt")
// ersetze LF durch CRLF (Zeilenschaltung)
cString := STRTRAN( cString, chr(10), chr(13)+ chr(10))
//neue Textdatei mit Zeilenschaltung
MemoWrit( "A_Test_Zeile.TXT", cString)
RETURN nil
Code: Alles auswählen
Ergebnis:
...
und noch einer
48
9,0,1,0,0,0,0,0,0,18,2
12,1,0,0,0,0,0,0,0,24,3
23,0,0,0,0,0,0,0,0,23,1
9,1,0,0,0,0,0,0,0,-36,1
......
Hubert war schneller !!!!
Gruß Klaus
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: Textdatei in 2dim-Array
vielen Dank, durch die Tipps und die Beispiele habe ich es jetzt recht einfach hinbekommen.
Es wird alles zeilenweise in ein array eingelesen, und das kann ich dann weiterverarbeiten.
Es wird alles zeilenweise in ein array eingelesen, und das kann ich dann weiterverarbeiten.
Code: Alles auswählen
function t2a(cFile)
//
local array:={}
local CRLF:=chr(10)
//
cfread := MEMOREAD(cFile) // Datei Einlesen
DO WHILE !EMPTY(cfread)
ncrlf := AT(CRLF,cfread)
IF ncrlf > 0
txt := LEFT(cfread,ncrlf-1)
cfread := SUBSTR(cfread,ncrlf+1)
ELSE
txt := cfread
cfread := ""
ENDIF
//
aadd(array,txt)
//
ENDDO
//
return array