| Autor |
Beitrag |
Kralle
      
Beiträge: 65
Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
|
Verfasst: Di 15.11.11 15: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 Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 15.11.2011 um 16:28
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Di 15.11.11 15: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)
|
|
jaenicke
      
Beiträge: 19338
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 15.11.11 18: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.
|
|
Gausi
      
Beiträge: 8553
Erhaltene Danke: 479
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 15.11.11 18:56
Oder man sucht den ersten Leerstring mit einer Binärsuche, wenn wirklich mittendrin keine Leerzeilen vorkommen.
_________________ We are, we were and will not be.
|
|
Kralle 
      
Beiträge: 65
Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
|
Verfasst: Mi 16.11.11 06:46
Moin,
Gausi hat folgendes geschrieben : | | 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
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Mi 16.11.11 07: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)
|
|
Gausi
      
Beiträge: 8553
Erhaltene Danke: 479
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 16.11.11 07: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
Quelltext 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 |
_________________ We are, we were and will not be.
|
|