Dateiimport zeilenweise per Stream

Bild Microsoft Dynamics NAV 2009 (aka "NAV 6")
Forumsregeln
Impressum • Community-Knigge • Nutzungsbedingungen • Datenschutzrichtlinie

Bitte unbedingt angeben, ob sich eure Frage auf den RoleTailored-Client (RTC) oder den Classic-Client (CC) bezieht!

Dateiimport zeilenweise per Stream

Beitragvon lape » 17. März 2021 09:01

Hi ich versuche eine Datei per Stream einzulesen.
Dabei möchte ich gerne auf Zeilenumbrüche reagieren. Ich dachte, dass folgendes Konstrukt funktioniert:

Code: Alles auswählen
CR := 10;
LF := 13;

ImportFile.OPEN('C:\TEMP\im.txt');
ImportFile.CREATEINSTREAM(IStream);
WHILE NOT IStream.EOS DO BEGIN
  IStream.READtext(Buffer);
  FOR BufferPos := 1 TO STRLEN(Buffer) DO BEGIN
    if Buffer[BufferPos] = CR then
   ...


Leider funktioniert das nicht wie gewĂĽnscht. Char 10 und 13 kommen im Stream scheinbar gar nicht an. Char 9 (Tab) hingegen hat funktiniert.
lape
Microsoft Partner
Microsoft Partner
 
Beiträge: 37
Registriert: 3. Juli 2008 16:13
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Dateiimport zeilenweise per Stream

Beitragvon fiddi » 17. März 2021 10:36

Hallo,

Kann das sein, das der Text schon zeilenweise einglesen wird?

Im TextMode bzw. ReadText schmeiĂźt er die CRLFs glaube ich schon beim lesen weg.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Dateiimport zeilenweise per Stream

Beitragvon Raik Zobel » 18. März 2021 15:28

Jo, sieht eigentlich so aus. Vielleicht mal noch mit dem Encoding rumspielen. Hier noch ein DotNet Pendant:

Code: Alles auswählen
Name   DataType   Subtype   Length
ServerFileName   Text      
StreamReader   DotNet   System.IO.StreamReader.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   
Encoding   DotNet   System.Text.Encoding.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   
FileStream   DotNet   System.IO.FileStream.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   
FileMode   DotNet   System.IO.FileMode.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   


Code: Alles auswählen
//Setze Encoding
Encoding := Encoding.UTF8;

//Lade Datei
FileStream := FileStream.FileStream(ServerFileName,FileMode.Open);
StreamReader := StreamReader.StreamReader(FileStream,Encoding,TRUE);

//Lese Zeilen
WHILE NOT StreamReader.EndOfStream DO
  ProceedFileLine(StreamReader.ReadLine);


GrĂĽĂźe
Benutzeravatar
Raik Zobel
 
Beiträge: 279
Registriert: 4. März 2013 13:43
Realer Name: Raik Zobel
Arbeitsort: Leipzig
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.00SP3, 2013R2, 2016


ZurĂĽck zu NAV 2009

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast