Autor Thema: stream.ReadText(STMREAD_LINE, EOL_CRLF, EOL_xyz)  (Gelesen 2608 mal)

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
stream.ReadText(STMREAD_LINE, EOL_CRLF, EOL_xyz)
« am: 29.06.09 - 18:36:10 »
Hallo,

per stream.ReadText(STMREAD_LINE, EOL_CRLF, EOL_xyz) hole ich mir zeilenweise Daten aus einer Textdatei.
Mit dem Wert einer Zeile fülle ich ein Feld im aktuellen UI Dokument.
Das klappt alles prima soweit.

Allerdings werden immer die EOL character mit reingeschrieben. Das ist besonders unangenehm wenn ich per View nach den Dokumenten suchen möchte. Ich kriege dann immer eine negative Ausgabe, auch wenn es das Dokument mit dem Wert gibt.

die Hilfe sagt:

oneLine&
Optional. Constant of type Long.
STMREAD_LINE (0) reads one line.
Defaults to the entire stream to a maximum of 2GB.
eol&
Optional. Constant of type Long. End-of-line character(s) within the text. The default is EOL_CRLF.
EOL_ANY (4) treats any of EOL_CR, EOL_CRLF, or EOL_LF as end-of-line.
EOL_CR (2) treats a carriage return (ASCII 13) as end-of-line.
EOL_CRLF (0) treats a carriage return and line feed (ASCII 10 + 13) as end-of-line. Default.
EOL_LF (1) treats a line feed (ASCII 10) as end-of-line.
EOL_NONE (5) treats nothing as end-of-line.
EOL_PLATFORM (3) follows the conventions of the current platform.

Ich habe jetzt alle EOL_xyz Varianten durchprobiert, aber keine liefert mir 'nur' die entspr. Zeile aus dem Textdokument sondern immer noch die EOL Charakter mit.

wie bekomme ich diese EOL Character wieder aus meinen Feldern oder wie vermeide ich sie?

Vielen Dank schonmal
Stefan


Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline Wupperhannes

  • Frischling
  • *
  • Beiträge: 38
  • Geschlecht: Männlich
Re: stream.ReadText(STMREAD_LINE, EOL_CRLF, EOL_xyz)
« Antwort #1 am: 02.07.09 - 13:53:04 »
Die EOL_xxx dienen nur dazu der Routine zu sagen wann eine Zeile zu Ende ist. Die Zeichen werden aber mit kopiert (z.B. um sie beim Speichern in einer Textdatei nicht anhängen zu müssen).

Bleibt Dir wohl nichts anderes übrig als die letzten beiden Zeichen (oder eben soviele Zeichen die das Ende der Zeile definieren) zu löschen. Es gibt jede Menge String Befehle mit denen man das machen kann.

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
Re: stream.ReadText(STMREAD_LINE, EOL_CRLF, EOL_xyz)
« Antwort #2 am: 16.07.09 - 16:30:14 »
Die EOL_xxx dienen nur dazu der Routine zu sagen wann eine Zeile zu Ende ist. Die Zeichen werden aber mit kopiert (z.B. um sie beim Speichern in einer Textdatei nicht anhängen zu müssen).

Bleibt Dir wohl nichts anderes übrig als die letzten beiden Zeichen (oder eben soviele Zeichen die das Ende der Zeile definieren) zu löschen. Es gibt jede Menge String Befehle mit denen man das machen kann.

OK, dachte ich mir schon... :(
Danke für den Tipp.
Am besten wäre es die beiden Zeichen explizit rauszufiltern. Allerdings habe ich noch keine Möglichkeit gefunden diese beiden Zeichen (sehen aus wie 'Kästchen') so zu produzieren das ich sie zum ruasoperieren verwenden kann.
Und pauschal immer die beiden letzten Zeichen zu löschen finde ich eher ungeschickt.

Gruß Stefan
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
Re: stream.ReadText(STMREAD_LINE, EOL_CRLF, EOL_xyz)
« Antwort #3 am: 16.07.09 - 17:42:07 »
Ich mache das jetzt mit einem zweiten Feld in dem der Inhalt des ersten Feldes per
@ReplaceSubstring( Erstes_Feld ; @NewLine ; "" )
geändert wird...

Damit gehts.
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline Wupperhannes

  • Frischling
  • *
  • Beiträge: 38
  • Geschlecht: Männlich
Re: stream.ReadText(STMREAD_LINE, EOL_CRLF, EOL_xyz)
« Antwort #4 am: 16.07.09 - 20:39:42 »
In der Regel sind die beiden Zeichen, die das Ende der Zeile markieren "Carriage Return" CR(0x0D) und "Linefeed" LF(0x0A) oder dezimal 13 und 10  (daher eben auch EOL_CRLF). Vielleicht hilft das beim Filtern .....

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz