Autor |
Beitrag |
tolosonic
      
Beiträge: 36
|
Verfasst: Do 23.02.06 17:51
Hey,
falls die frage dumm ist, sorry, bin noch anfänger
ich hab ein memo, dem ich mit lines.add diverse zeilen aus einer textdatei (readln) zuweise. das klappt auch alles.
nur ist am ende des memos dann immer ein zeilenumbruch. da ich später diverse memos in ein weiteres "addiere", entstehen da leerzeilen. wie kann ich den zeilenumbruch ohne viel aufwand verhinden oder löschen, so dass beim zusammenfügen keine leerzeilen entstehen?
|
|
Marco D.
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Do 23.02.06 17:53
Nicht die direkte Hilfe - aber memo1.lines.loadfromfile(dateipfad) ist doch viel einfacher 
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
tolosonic 
      
Beiträge: 36
|
Verfasst: Do 23.02.06 17:54
klar, aber ich sortier da noch ein paar zeilen aus und so, weeßte? 
|
|
Marco D.
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Do 23.02.06 17:56
Dann machs mit memo1.lines.delete(index), dann werden die Zeilen gelöscht.
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
tolosonic 
      
Beiträge: 36
|
Verfasst: Do 23.02.06 17:58
wenn ich für index (count - 1) nehme löscht er aber nicht den zeilenumbruch, der scheint nicht als zeile zu gelten. der umbruch bleibt, die letzte zeile verschwindet. das sollte nicht so sein... 
|
|
Marco D.
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Do 23.02.06 18:00
Woran erkennst du den Zeilen, die raus sollen?
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
tolosonic 
      
Beiträge: 36
|
Verfasst: Do 23.02.06 18:04
achso, du meinst ich soll die leerzeilen dann im zusammengesetzten memo löschen? nö, das ist doof. geht das nicht, dass ich die zeilenumbrüche in den einzelnen memos direkt entferne?
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Do 23.02.06 18:20
hm wie war das denn?
Ich glaub so:
Du musst in er property "TMemo.Text" nach den Zeichen #13 oder #1310 suchen (Zeichen für Zeilenumbruch) oder irgendwie sowas. Auf jedenfall ist in Text der Text mit Zeilenumbruchszeichen drinnen.
Also müsstest du diese nur noch raussuchen und entfernen.
Du könntest mal folgendes machen:
Delphi-Quelltext 1:
| Label1.Caption := memo1.Text |
um heruaszufinden, welche Zeichen es sind.
Mein Problem ist halt, dass ich grad ein Delphi in der Nähe hab...
Gruß alias5000
Ich hoffe es geht...
EDIT:
Und wenn du nicht Memo1.lines.add benutzt, sondern einfach von vorne herein an eine Zeile etwas dranhängst?
Delphi-Quelltext 1:
| Memo1.Lines.Strings[XY] := Memo1.lines.Strings[XY] + 'dein Text'; |
XY steht für die Zeile, in der das stattfindet
_________________ Programmers never die, they just GOSUB without RETURN
|
|
tolosonic 
      
Beiträge: 36
|
Verfasst: Do 23.02.06 18:26
nee, da zeigt er nur zwei striche an. aber selbst wenn ich die zeichen kenne (#13#10 glaub ich), wie entferne ich die dann ausm memo? memo1.text := memo1.text - '#13#10'; wird wohl kaum funktionieren, oder?
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Do 23.02.06 18:29
-->
Delphi-Quelltext 1: 2: 3: 4: 5:
| var s: string; begin s := Memo1.Text; delete(s, , ); Memo1.Text := s; |
Aber les erstmal mein EDIT
_________________ Programmers never die, they just GOSUB without RETURN
|
|
Fabian W.
      
Beiträge: 1766
Win 7
D7 PE
|
Verfasst: Do 23.02.06 18:32
such mal nach stringreplace();
|
|
tolosonic 
      
Beiträge: 36
|
Verfasst: Do 23.02.06 18:44
Delphi-Quelltext 1: 2: 3: 4:
| i:=(length(memo1.text)-1); s:=memo1.text; delete(s,i,2); memo!.text:=s; |
das ist soweit ok. nur find ich den umweg über den string noch sehr hässlich, wie kann ich vielleicht die zwei zeichen direkt löschen?
|
|
Fabian W.
      
Beiträge: 1766
Win 7
D7 PE
|
Verfasst: Do 23.02.06 19:09
hier kann mna sich den mUnd fusselig red- naja ok -schreiben. Schau mal meinen oberen Post an.

|
|
Freiberger
      
Beiträge: 130
WIN XP
Delphi 7
|
Verfasst: Do 23.02.06 19:47
Ich muß Fabian Recht geben...
such mal nach stringreplace();
Du ersetzt einfach alle #13 & #13+#10 gegen ''
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Do 23.02.06 20:44
Hallo,
tolosonic hat folgendes geschrieben: | ich hab ein memo, dem ich mit lines.add diverse zeilen aus einer textdatei (readln) zuweise. das klappt auch alles.
nur ist am ende des memos dann immer ein zeilenumbruch. da ich später diverse memos in ein weiteres "addiere", entstehen da leerzeilen. wie kann ich den zeilenumbruch ohne viel aufwand verhinden oder löschen, so dass beim zusammenfügen keine leerzeilen entstehen? |
Der Zeilenumbruch stellt beim addieren von Memo-Inhalten in ein weiteres Memo kein Problem dar, wenn man mit AddStrings arbeitet.
Angenommen Memo1 und Memo2 enthalten die bereinigten Lines.
Der letzte Zeilenumbruch kann bleiben!
Das zusammenführen geht dann so:
Delphi-Quelltext 1: 2: 3:
| Memo3.Lines.AddStrings(Memo1.Lines); Memo3.Lines.AddStrings(Memo2.Lines); |
Abgesehen davon würde ich Texte nicht über Memos zusammenführen,
da sind IMHO Stringlisten besser geeignet.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
rybe
Hält's aus hier
Beiträge: 12
|
Verfasst: Do 23.02.06 23:49
probiere es doch mal, nach jedem memo1.lines.add(); mit:
memo1.text:=trim(memo1.text);
|
|
tolosonic 
      
Beiträge: 36
|
Verfasst: Fr 24.02.06 13:31
@lannes: danke, das hats gebracht. ja, natürlich sonst nicht mit memos, ich brauch die hier aber aus nem anderen grund. vielen dank!
... das trim() klingt laut hilfe ganz vielversprechend, bewirkt aber irgendwie überhauptnichts. seltsam.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Fr 24.02.06 14:50
Hallo,
tolosonic hat folgendes geschrieben: | ... das trim() klingt laut hilfe ganz vielversprechend, bewirkt aber irgendwie überhauptnichts. seltsam. |
es bewirkt schon etwas.
Die Funktion Trimm entfernt alle am Anfang und Ende eines Strings vorhandene Leer- und Steuerzeichen. Wobei in deinem Fall Memo.Test der String ist.
Angenommen folgende Zeilen sind im Memo vorhanden:
Quelltext 1: 2: 3: 4: 5: 6:
|
Zeile mit Text
Zeile mit Text |
führst Du dann den Code aus:
memo1.text:=trim(memo1.text);
sind die ersten und letzten Leerzeilen (1. 2. 3. und 7.)nicht mehr im Memo enthalten,
auch die letzte leere Zeile(nur ein Zeilenumbruch) die Dir die Probleme bereitet hat:
Quelltext 1: 2: 3:
| Zeile mit Text
Zeile mit Text |
Die leere Zeile in der Mitte kann man mit Trim nicht löschen.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
davidgippner
      
Beiträge: 23
|
Verfasst: Fr 24.02.06 15:04
Für die dazwischenliegenden Zeilen vielleicht bei der Übernahme eine if-then... einfügen:
Delphi-Quelltext 1:
| if Memo1.Lines[x]<>'' then Memo2.Lines.Add(Memo1.Lines[x]) |
oder in der Art
|
|
rybe
Hält's aus hier
Beiträge: 12
|
Verfasst: Sa 25.02.06 18:15
|
|