Autor Beitrag
Ak-Alex
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 09.05.03 00:16 
Wie kann ich einen Memo Inhalt löschen, so das die letzte Zeile aber stehen bleibt?

Gruß

Alex
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 09.05.03 00:58 
Hi,

ein Memo ist dafür nichts, nimm doch eine Listbox, dann geht das so:

ausblenden Quelltext
1:
2:
3:
...
for i := 0 to Listbox1.Items.Count -1 do
   Listbox1.Items.delete(i);


WICHTIG: die -1 :!:

_________________
Gruß
Hansa
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 09.05.03 01:52 
1. Was wenn er was reinschreiben will?

2. Löscht dein Source nur jeden zweiten Eintrag.

So werden alle Einträge bis auf den letzten gelöscht:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  for i := Listbox1.Items.Count-2 downto 0 do
   Listbox1.Items.delete(i);
end;

Beim Memo geht es ebenso.
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 09.05.03 02:33 
@Luckie: Dein Code macht doch dasselbe wie meiner. Wenn nicht wieso? :shock: Bis auf das -1 , -2 oder wird da ein Zeiger beim Löschen neu gesetzt auf den nächsten Wert? , so daß ich tatsächlich immer einen Eintrag überspringe. Tja, ist jetzt sowieso viiiiieel zu spät. Soweit meine Peilung, probiere das irgendwann später aus. 8)

_________________
Gruß
Hansa
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 09.05.03 04:10 
Du fängst an, da ist i gleich null, also wird der nullte Eintrag gelöscht. Jetzt hat die Lisbox zwar einen Eintrag weniger, aber es ist alles eins runter gerutscht und es gibt wieder einen Eintrag mit dem Index null. Beim nächsten Durchlauf ist i gleich eins und der Eintrag mit dem Index eins wird gelöscht. Aber was ist mit dem Eintrag, der den Index 0 hat? Der bleibt stehen und wird nicht gelöscht. Klar? :wink:

Im Gegensatz zu deinem Code, löscht mein Code immer den letzten Eintrag weg, also von hinten. Listbox mit 10 Einträgen: i ist beim Start 10 oder 9, jenachdem wie viele stehen bleiben sollen. Dann wird der letzte Eintrag weggelöscht, i wird dekrementiert und hat jetzt der Wert, der der verbleibenden Anzahl von Einträgen in der Listbox entspricht.

Mach mal eine Listbox mit den Einträgen 0 bis 9 und dann probier mal deinen Code aus und dann meinen.
inselberg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458



BeitragVerfasst: Fr 09.05.03 04:57 
wie wärs mit
ausblenden Quelltext
1:
memo1.text := memo1.lines[memo1.lines.count-1];					

_________________
hans bist du das ?
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 09.05.03 11:36 
Hi,

@Luckie: hast Recht, da sieht man wieder warum man Programme testen sollte.
@Inselberg: Deins geht auch. Was Du da machst ist mir nicht ganz klar.

Da bekanntlich aller guten Dinge drei sind, hier wies noch geht:

ausblenden Quelltext
1:
2:
  while ListBox1.Count > 1 do
    ListBox1.Items.delete (0);

Das hätte den Vorteil, außer dem >1 noch weitere Abbruchkriterien zu setzen, ohne break benutzen zu müssen. Luckie: :wink:

_________________
Gruß
Hansa
Ist die Frage beantwortet? Das Problem gelöst?

Dann klicke hier, um das Thema entsprechend zu markieren!