Letzten Eintrag in Stringlist ermitteln
spacer
Autor Nachricht
Kralle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 57

Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
BeitragVerfasst: Di 15.11.11 16:36 
Hallo,

ohne die Liste in einer Schleife durchlaufen zu lassen, gibt es noch einen weg festzustellen, in welcher Zeile sich der Letzte Inhalt befindet?
Leerzeilen in der Mitte gibt es nicht.

MfG
Heiko


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 15.11.2011 um 16:28
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 929
Erhaltene Danke: 70


Delphi 2010 Enterprise
BeitragVerfasst: Di 15.11.11 16:44 
Ja, die Stringlist hat die Eigenschaft "Count". Die gibt an, wie viele Einträge in der Liste sind.
Aber da die Liste 0-basiert ist, musst Du aufpassen. Der letzte Eintrag ist somit liste.strings[list.count - 1];

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Di 15.11.11 19:16 
Ich denke mal es geht um Leerzeilen, oder?

Und da gibt es theoretisch schon Möglichkeiten, aber die schnellste ist in einer Schleife von hinten angefangen nachzuschauen wie du meintest.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Moderator
Beiträge: 8118
Erhaltene Danke: 251

Win XP, Win 7
D7 PE, RAD Studio 2009 Professional
BeitragVerfasst: Di 15.11.11 19:56 
Oder man sucht den ersten Leerstring mit einer Binärsuche, wenn wirklich mittendrin keine Leerzeilen vorkommen.

_________________
Oel ngati kameie.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Kralle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 57

Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
BeitragVerfasst: Mi 16.11.11 07:46 
Moin,

user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Oder man sucht den ersten Leerstring mit einer Binärsuche, wenn wirklich mittendrin keine Leerzeilen vorkommen.


Hast Du ein Beispiel für diese Suche?

MfG
Heiko
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 929
Erhaltene Danke: 70


Delphi 2010 Enterprise
BeitragVerfasst: Mi 16.11.11 08:22 
Guck mal hier:
de.wikipedia.org/wiki/Bin%C3%A4rsuche

Da gibts unten einen Pseudocode, den musst Du nur nach Delphi übersetzen.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Moderator
Beiträge: 8118
Erhaltene Danke: 251

Win XP, Win 7
D7 PE, RAD Studio 2009 Professional
BeitragVerfasst: Mi 16.11.11 08:49 
Die gängige Binärsuche muss man ja etwas anpassen, da man ja nicht abbricht, wenn das Element gefunden wurde, sondern erst dann, wenn sich linke und rechte Suchgrenze treffen.

Ich würde das so probieren
ausblenden Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
 links := 0;
rechts := Liste.count-1;
solange rechts > links mache
mitte := (links + rechts) DIV 2;
wenn Liste[mitte] = '' dann
rechts := mitte - 1
else
links := mitte + 1;
ende
ergebnis := links/rechts +/- 1; // da müsste man nochmal genauer schauen, wie das aussieht,
//ggf noch eine Fallunterscheidung

_________________
Oel ngati kameie.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home