Autor Beitrag
mehmeh
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: Mi 27.07.05 10:02 
Hi,

ich hab ein RichEdit auf ReadOnly gesetzt und schreibe über RichEdit.lines.add() Daten hinein. Nun hab ich aber das Problem, dass ich ganz unten eine Leerzeile habe. Und die muss da weg, weil der Text per Mail verschickt wird und möglicher weiße wieder maschinell eingelesen wird und da deswegen am Ende keine Leerzeile stehen darf.
Wäre ja kein Problem die Leerzeile mit Entf zulöschen, aber in das Feld soll der Benutzer nichts ändern können.

wenn ich RichEdit.Lines.Delete oder Free mache, dann ist alles weg. Das klappt also nicht.

Habt ihr ne Idee?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 27.07.05 10:08 
Du kannst bei Delete noch einen Index als Parameter übergeben. Der bestimmt dann die Zeile, die gelöscht werden soll.
mehmeh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: Mi 27.07.05 10:28 
Also ich hab´s
so
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
for i := 1 to 75 do          // Die 75 Bingo Zahlen werden ins RichEdit geschrieben
 RichEdit1.Lines.Add(IntToStr(i) + '=' + b[i]);

 RichEdit1.Lines.Add('J=' + IntToStr(j));
 RichEdit1.Lines.Add('S=' + b[s]);

 i := RichEdit1.Lines.Count;
 RichEdit1.Lines.Delete(i);

und das klappt nicht.
Aus mir momentan unerklärlichen Gründen ist da unten immer noch eine Leerzeile.

wenn

RichEdit1.Lines.Delete(i+1);

dann passiert nichts
aber wenn

RichEdit1.Lines.Delete(i-1);

dann wird die Zeile über der Leerzeile gelöscht
Was hab ich denn nur übersehen
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 27.07.05 10:41 
Das
ausblenden Delphi-Quelltext
1:
RichEdit1.Lines.Delete(i-1);					

wäre im Prinzip richtig.
Allerdings scheint ein Richedit die letzte Zeile mit "nichts" nicht mitzuzählen. Ich habs mir anzeigen lassen. Die Zeilenzahl entspricht der Anzahl, ohne diese berüchtigte letzte Zeile.
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mi 27.07.05 11:00 
Hallo,

richtig.
Die letzte Zeile wird zwar nicht mitgezählt, aber mit SaveToFile wird daraus eine Zeile in der RTF-Datei.
Die "berüchtigte letzte Zeile" und eventuelle Leerzeilen kannst Du mit folgendem Code entfernen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var s : String;
    z : Integer;
begin
  //Leerzeilen entfernen
  for z := RichEdit1.Lines.Count-1 downto 0 do
    begin
    if RichEdit1.Lines[RichEdit1.Lines.Count-1] = '' then
      RichEdit1.Lines.Delete(RichEdit1.Lines.Count-1)
      else
      break;
    end;
  //berüchtigte letzte Zeile entfernen (entspricht Taste Entf)
  s := RichEdit1.Text;
  delete(s,Length(s)-1,2);
  RichEdit1.Text := s;
  RichEdit1.Lines.SaveToFile('C:\temp\Eine.rtf');
end;

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
mehmeh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: Mi 27.07.05 11:30 
@ Lannes

das war eine sehr gute Antwort und es hat geklappt!

DANKE!