EOF() bei Textdateien [ERLEDIGT]

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

EOF() bei Textdateien [ERLEDIGT]

Beitrag von Manfred »

Hi,

ich lese eine fremde Textdatei ein und arbeite sie Satz für Satz durch. Sobald ein EOF() kommt, ist der Vorgang beendet.
Das klappte auch prima, nur ist jetzt irgendwie ein EOF mittendrin reingekommen, welches ich aber nicht so direkt finde. Das Programm beendet dann und läuft nicht bis zum Ende durch. Ich behaupte jetzt, das es das ist.

Helft mir nochmals kurz auf die Sprünge, wonach ich suchen muß in der Textdatei. Also welche Zeichenfolge meine ich. Ich denke mal, es wird über eine Hexeditor laufen müssen?
Zuletzt geändert von Manfred am Mo, 24. Nov 2008 14:34, insgesamt 1-mal geändert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hallo Manfred,

hier ein Beispiel aus meinem Quellcode. aDes ist ein Array und beinhaltet mehrere Textdateien.

For x = 1 to Len(aDes)
cFile:=aDes[x][1]
cDatei:=memoread(cFile)
cDatei:=strtran(cDatei,";"," ;")
nZeile:=MLcount(cDatei,500)
For i = 1 to nZeile
cDatenSatz:=alltrim(MemoLine(cDatei,500,i))
cSchl:=Token(cDatenSatz,";",2)
If cSchl="DESADV"
Else
.........
Next i
Next x
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Rolf,

ich bin mir jetzt nicht so ganz sicher, ob Du mein Problem richtig verstanden hast. Ich suche das EOF() was irgendwo im TXT steht, welches den Abbruch der Schleife verursacht. Habe aber im Moment irgendwie nicht den genauen Plan, was ich da suchen muß. Die Textdatei hat einen LASTREC() von 518 geht aber nur bis 400 und bricht dann ab.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Jetzt ist mir noch etwas aufgefallen. Sobald der Satzzeiger auf der Recno() 402 steht, springt er beim nächsten Skip() auf EOF() und das obwohl laut LASTREC() 512 Sätze vorhanden sein sollen.

Was will mir das sagen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Noch etwas entdeckt.

In einer älteren Programmversion klappt es. Der Unterschied zwischen den beiden Programmen ist, dass ich in der älteren Version alles von Hand einzeln abfrage, sprich ich prüfe auf ASC(cFeld) <> 13. Bei der neueren Version benutze ich DELDBE

Code: Alles auswählen

cDbeStd := DBESETDEFAULT("deldbe")
DBEINFO(COMPONENT_DATA, DELDBE_FIELD_TOKEN, CHR(9))                    // Tabzeichen dient als Feldtrenner
         DBEINFO(COMPONENT_DATA, DELDBE_DELIMITER_TOKEN, Chr(0) )               //
         DBEINFO(COMPONENT_DATA, DELDBE_MAX_BUFFERSIZE, 128*1024)
         DBEINFO(COMPONENT_DATA, DELDBE_DECIMAL_TOKEN, ",")                     // Währungen werden mit Komma getrennt
         DbeInfo(COMPONENT_DATA, DBE_EXTENSION,"")                              // jetzt akzeptiert sie auch KEINE Extension!?
//                                                             1         2
//                                                    12345678901234567890123456
//         DBEINFO(COMPONENT_DATA, DELDBE_FIELD_TYPES, "NCCNNCNCCCCCNCCNNCCCCCC")
         DBEINFO(COMPONENT_DATA, DELDBE_FIELD_TYPES, "CCNCNCCCNNNNCNCCCCCCCCCCCN")
         USE ..\datenbanken\amazon\rueckmeldung\catalog-generic-EXPORT VIA DELDBE NEW EXCLUSIVE
         DBESETDEFAULT(cDbeStd)
nArea := SELECT()
und mache einfach nur ein:

Do WHILE ! (nArea)->(EOF())
(nArea)->(dbskip())
ENDDO
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Manfred,
öffne mal die Datei in einem Texteditor und ersetze den Tab durch den Tab (im gesamten Text).
Wie oft wurde ersetzt?
Ist die Anzahl glatt durch 512 (die Anzahl an Datensätzen) teilbar?
Worin unterscheiden sich die Zeilen 402 und 403 (bezogen auf den Aufbau)? Ist die Zeile 402 oder 403 sehr lang?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Martin,

eben kurz geantwortet: Ich habe ab der "Fehlerzeile" 3 Zeilen entfernt und dann läuft es. Das kann es aber nicht sein.

Ich werde mich gleich um Deinen Vorschlag kümmern, muß nur eben die Gunst der Stunde nutzen und Rasen mähen. :lol:
Bis später.....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
doch - dann ist nämlich innerhalb der drei Zeilen ein Fehler, z.B. ein Tab zu viel (als Text in einem Feldinhalt) oder eine der Zeilen ist zu lang (Du hast ja eine Obergrenze definiert)...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Martin,

hm, das wäre schon denkbar, aber wie soll ich das herausfinden? Ich habe die Textdatei in eine Tabellenkalkulation eingelesen mit TAB als Trenner, da sind aber alle Zeilen schön senkrecht passend untereinander. Jedenfalls kann ich da so nichts finden.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
öffne die Datei in einem normalen Editor und mache dort ein Suchen und Ersetzen...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Fehler gefunden......

Es befand sich ein Sonderzeichen im Namen. Und das hat zu diesem merkwürdigen Verhalten geführt. Im Texteditor war es ein Quadrat. Das ist natürlich verdammt übel. Wie soll man sowas abfangen? Für die Datenprüfung während der Eingabe in die Textdatei bin ich nicht zuständig, das erledigt Amazon, oder auch nicht....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: EOF() bei Textdateien

Beitrag von AUGE_OHR »

hi,
Manfred hat geschrieben: ich lese eine fremde Textdatei ein und arbeite sie Satz für Satz durch. Sobald ein EOF() kommt, ist der Vorgang beendet.

Helft mir nochmals kurz auf die Sprünge, wonach ich suchen muß in der Textdatei. Also welche Zeichenfolge meine ich. Ich denke mal, es wird über eine Hexeditor laufen müssen?
wenn du meist das mittendrin ein EOF ist könnte es auch ein CRTL-Z sein.
auf jeden Fall müsste "die" Datei ja "kürzer" als das original sein ?

nPosi := (Original - NeueDatei) müsste dann auch gleich die Position sein
wo dein EOF steht.

gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi,

so, nachdem ich mir im Hexeditor einmal das Zeichen angesehen habe, scheint es ein C3 zu sein. Umgerechnet ist es dann 195 und ergibt ein "A" mit einer Tilde drüber. Ich werde jetzt einmal bei Alaska nachfragen, was dieses Zeichen warum bewirkt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

ein Text-EOF Zeichen ist chr(26) - memowrit() setzt ein solches immer ans Dateiende und NotePad zeigt es als kleines Kästchen an, wobei auch chr(0) als Zeilenende Probleme machen kann.
Die DELDBE hat zudem das Problem, dass die Datei eine feste Satzlänge braucht und man auch noch die Felddefinitionen liefern muss.

Ich lade Textdateien in den Speicher und nutze die substr() Funktion um einzelne Zeilen zu verarbeiten. MLCount und Memoline kann man bei kleinen Texten auch nutzen (über 1000 Zeilen wird es damit zäh).
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Hubert,

das Zeichen ist mittendrin und verursacht den Murks. Sobald es entfernt, bzw. gegen ein legales ausgetauscht wird, klappt es prima. Bisher habe ich noch keine Antwort von Alaska. Mal sehen ob und was die schreiben...
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Manfred,

das Zeichen könnte auch zurecht dort sein !

Festplatten sind ja in Sektoren mit fixer Länge unterteilt und eine Textdatei hat keinen Header der die Länge festlegt. Daher haben früher Textprogramme das chr(26) gesetzt um zu erkennen wo der richtige Text aufhört und der Schrott (Füllbytes aus Blockgröße) anfängt.

Notepad etc. machen das heute anders, daher auch die seltsame Anzeige des Kästchens. Alaska kann dir nicht sagen woher deine Datei dieses Zeichen hat. Memowrit() wie gesagt setzt es am Ende ...
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Hubert,

das Zeichen gehört definitiv nicht dahin, bzw. scheint eine Fehleingabe des Users zu sein, die nicht abgefangen wird vom Programm. Ich möchte auch von Alaska nicht wissen, warum das Zeichen da steht, sondern warum die DELDBE darauf so reagiert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
urbi
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: So, 26. Mär 2006 18:47
Wohnort: 76185 Karlsruhe
Kontaktdaten:

Beitrag von urbi »

Hallo Manfred,

ich nutze in einem solchen Fall immer Lowlevel Funktionen:

Code: Alles auswählen

         Handle := FOPEN(spfad+"\INVEXPO.TXT")
         cString := SPACE(256)
         FREAD(Handle,@cstring,256)   // maximale Zeilenlänge
         nOffset := 0
         BSAVEERROR := ERRORBLOCK()
         DO WHILE noffset < (nbytes-10) 
           BEGIN SEQUENCE
            ERRORBLOCK( {|e| BREAK(e)} )
            OPROGRESS:INCREMENT(i)             
            noffset += AT(CHR(13),cstring)    
            cText := SUBSTR(cString,1,AT(CHR(13),cstring)-1)
            aData := {}
            TOKENINIT(@cText,";",1)
            WHILE !TOKENEND() 
                AADD(aData,TOKENNEXT())
            ENDDO   

            IF !EMPTY(adata[1])
                //
                // Daten verarbeiten
                //
            ENDIF   

        RECOVER USING oError
           ERRORBLOCK( bSaveError )
           cMessage := "Fehler: "
           IF Valtype( oError:description ) == "C"
              cMessage += oError:description+ "   "
           ENDIF
           IF ! Empty( oError:operation )       
               cMessage += oError:operation 
           ENDIF
           ERRORBLOCK( bSaveError )
           IF  CONFIRMBOX(oFDLG,"Datensatz  Artikel   [ "+LEFT(cText,30)+" ]  ist fehlerhaft!"+CHR(10)+CHR(10);
           + cMessage+ CHR(10)+CHR(10);
           +"überprüfen und korrigieren Sie den Datensatz!"+CHR(10)+CHR(10);
           +"oder brechen sie den Import ab.";
           ,"Fehler bei Invenur neu",XBPMB_OKCANCEL ,XBPMB_CRITICAL+XBPMB_APPMODAL)= XBPMB_RET_CANCEL 
           EXIT

           ENDIF
           ERRORBLOCK( {|e| BREAK(e)} )
           END SEQUENCE
           ERRORBLOCK( bSaveError )
            FSEEK(Handle,noffset)
            FREAD(Handle,@cstring,256)
            i ++ 
         ENDDO
         FCLOSE(handle)
 

ist schnell und flexibel, und Fehler werden gezeigt

Gruss Rainer
urbi
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Rainer,

sowas ähnliches hatte ich anfangs auch. Ich habe jede Zeile Zeichen für Zeichen "gescannt". Ich habe aber durch die DELDBE etliches an Arbeit abgenommen bekommen. Ich denke auch einmal, dass es bei größeren Dateien schneller ist, als das Zeichen für Zeichen prüfen. Zumal noch etliche Tauschvorgänge (aus der Textdatei Spalten extrahieren und dann in eine DBF schreiben) hinzukommen, die auch noch geprüft werden wollen. Das erledigt jetzt die DELDBE für mich.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

Ctrl+Z erzeugt das Zeichen wenn ich recht weiß.

Die DELDBF macht nix anderes als das Standardende einer Textdatei zu erkennen. Ich tausche solche Zeichen bei meinen Textdateien vorher aus:

Code: Alles auswählen

cTxt := File2Str(...)
cTxt := strtran(cTxt,chr(0)," ") // oder "" für Löschen
cTxt := strtran(cTxt,chr(26)," ") // oder "" für Löschen
...
Str2Disk(...,cTxt) // memowrit() nicht nutzen !
ich meine ich hätte Str2Disk() und File2STr() in der Wissensdatenbank veröffentlicht. Die XbToolsIII haben ähnliche Funktionen FileStr() und StrFile()
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Hubert,

CTRL+Z könnte das Zeichen sein, was bei mir Ärger macht?
Nun, wenn dem so ist, dann muß ich schweren Herzens eben vorher einen Durchlauf machen und es entfernen, wobei mir aber dann die DELDBE nichts mehr nutzt. Wenn ich nämlich erst einen Prüflauf machen muß, dann kann ich auch gleich dabei alles andere erledigen. Das ist aber m.E. nicht Sinn und Zweck der Sache. Sowas kann doch bei Textdateien immer wieder passieren. Naja, warten wir mal ab, was von der Eisregion geantwortet wird.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi Manfred,

was für einen Durchlauf ?

1. Einlesen
2. Tauschen
3. Schreiben ...

das geht auch bei 30 MB so schnell, dass du nix davon merkst.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

ja nun,

ich habe den Quelltext jetzt nicht mehr zur Hand, aber es ging darum:

1) Öffnen
2) Gucken, wo die Spalten anfangen und aufhören
3) umkopieren in Datenbank
4) Datensatzende suchen
5) nächsten Satz anfangen
6) usw.
7) Dateiende.

Mag sein,. dass ich es mal wieder kompliziert programmiert habe, aber ich habe es mit FREADSTR() immer zeichenweise eingelesen.
Ich muß mal schauen, ob ich noch irgendwo eine Kopie liegen habe, vielleicht wird das ja dann mal wieder ein erquickliches Thema für die Vermeidung von Wurstprogrammen.....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Manfred hat geschrieben:ich habe es mit FREADSTR() immer zeichenweise eingelesen.
Ich hoffe doch du ließt ZEILENWEISE ein oder ?

Ich mache das immer per Hand (substr()).
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
Hubert schlug ja auch vor, Datei A zu lesen, die "Sonderzeichen" per Strtran() zu ersetzen, das ganze in Datei B zu schreiben.
Und nun kommst Du mit Deiner bisherigen Verarbeitung per DELDBE - allerdings auf Datei B!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten