Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen (https://www.delphipraxis.net/160499-einer-textdatei-nach-128-zeichen-bytes-ein-zeilenumbruch-einfuegen.html)

nachtstreuner 16. Mai 2011 14:30

in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Delphianer,

hab mal wieder ein Problem und einen rauchenden Schädel dazu.

Ein Memofeld mit einer eingelesenen Textdatei. (Siehe Bild 1).
Genau nach 128 Zeichen(Bytes) soll dort ein CR (Return) eingefügt werden, so daß das ganze wie in Bild2 dargestellt, aussieht.

Ideen ? Tips ?. Ich kann auch nicht nach einer bestimmten Zeichefolge suchen.

Danke Euch schonmal.

DeddyH 16. Mai 2011 14:35

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Mit Delphi-Referenz durchsuchenInsert sollte das doch recht einfach gehen.

nachtstreuner 16. Mai 2011 14:51

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Vielen Dank DeddyH

wenn ich folgendes eingebe passiert gar nichts.

Code:
 memo1.Lines.LoadFromFile(sFileDTA.FileName);
  memo1.SetFocus;
  memo1.SelStart :=128;
  memo1.Lines.Insert(128,#13);

chrisw 16. Mai 2011 14:53

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Nimm mal ein #13#10, dann sollte es funktionieren !

DeddyH 16. Mai 2011 14:55

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Delphi-Quellcode:
  Memo1.SelStart := 128;
  Memo1.SelText := sLineBreak;
So geht es auch ohne Insert.

ConnorMcLeod 16. Mai 2011 14:55

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
So etwas a la
Delphi-Quellcode:
if (Length(Memofeld.Text) >= 128) then
begin
  Memofeld.Text := Copy(Memofeld.Text, 1, 128) + CR + Copy(Memofeld.Text, 129, MaxInt);
end;

nachtstreuner 16. Mai 2011 14:57

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Hallo ChrisW,

danke für Deinen Tip. Es tut sich aber trotzdem nichts.

:pale:

DeddyH 16. Mai 2011 14:58

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Memo.Lines.Insert arbeitet zeilenweise, nicht zeichenweise. Hast Du meinen Vorschlag einmal versucht?

nachtstreuner 16. Mai 2011 15:02

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Danke an alle Beteiligten,

LineBreak, das funzt.

Code:
  memo1.Lines.LoadFromFile(sFileDTA.FileName);
  memo1.SetFocus;
  memo1.SelStart :=128;
  Memo1.SelText := sLineBreak;
  memo1.Refresh;
Bis zur nächsten Wissenslücke.:)

blackfin 16. Mai 2011 15:04

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Wäre es performance-technisch nicht viel geschickter, erstmal über einen FileStream 128 Bytes der Textdatei einzulesen, einen Zeilenumbruch an den Result-String ranhängen, dann den Rest der Datei lesen /anhängen und am Schluss nur nocht den Memo-Text auf den String zu setzen?
Ich benutze Memos eigentlich fast nie, aber ich hab sie für String-Operationen als Performance-Killer in Erinnerung..

DeddyH 16. Mai 2011 15:16

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Man kann die Datei auch erst in eine Stringliste einlesen, deren Text in eine Stringvariable kopieren, dort mit Insert den Zeilenumbruch einfügen und dann Memo.Text zuweisen. Aber ob der ganze Aufwand für einen einzigen Zeilenumbruch lohnt? Ich denke mal, mit den SelXXX-Methoden geht das auch ausreichend fix.

p80286 16. Mai 2011 15:24

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Zitat:

Zitat von blackfin (Beitrag 1101142)
...über einen FileStream 128 Bytes der Textdatei einzulesen, einen Zeilenumbruch an den Result-String ranhängen, dann den Rest der Datei lesen /anhängen .

Wenn man sich die Darstellung anschaut, handelt es sich wohl um Datensätze mit fixer Satzlänge (128Byte).
Da sollte das wohl das Mittel der Wahl sein.


Gruß
K-H

Jumpy 16. Mai 2011 16:18

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Ich habe gerade auch die Aufgabe bekommen, eine Klasse zu bauen, die DTA-Dateien checkt/analysiert und was du da hast kommt mir daher sehr bekannt vor.

Wäre es daher nicht sinnvoller A und E Teil jeweils in ein eigenes Edit-Feld zu schreiben und dann nur den C-Teil in eine Memo-Box? Das erscheint mir übersichtlicher.

Falls es sich nicht um DTA handelt nehm ich alles zurück :-D

Lannes 16. Mai 2011 19:10

AW: in einer Textdatei nach 128 Zeichen(Bytes) ein Zeilenumbruch einfügen
 
Zitat:

Zitat von DeddyH (Beitrag 1101143)
Ich denke mal, mit den SelXXX-Methoden geht das auch ausreichend fix.

genauso ist es, mit SelXXX kann man sogar schneller Zeilen anfügen als mit Add().

Ich hab da vor kurzem mal diesbezüglich die Geschwindigkeiten getestet, das war auf ein RichEdit bezogen, dürfte beim Memo aber ähnlich sein.


http://www.delphi-forum.de/viewtopic...=640588#640588


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz