Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unbekannte Einträge aus Stringlist löschen? (https://www.delphipraxis.net/132313-unbekannte-eintraege-aus-stringlist-loeschen.html)

Razeng 9. Apr 2009 17:25


Unbekannte Einträge aus Stringlist löschen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Tag,

die Zeit ist gekommen, vom passiven Forumsmitglied zum aktiven Poster zu mutieren, xD

denn ich suche nun schon mehrere Tage nach einer geeigneten Lösung, um einen mir teilweise unbekannten String aus einer Stringliste zu löschen, da die Position des Strings innerhalb der Liste variert, kann ich nicht über IndexOf gehen, da mir ja der ganze String unbekannt ist.

Nun konkret zu meinem Programm:

Zitat:

Zitat von Textdatei
M43
G28H0
M15
G50C0.
G98
G19G97S3980M13
G00C159.998
G00Z1.

So schauen die umliegenden Einträge in der Textdatei aus, die ich zu Beginn meines Programms in eine Stringliste lade.

Der Fettgedruckte Eintrag soll nun entfernt werden, allerdings variert die Zahl hinter dem S.

Bekannte Einträge wie zum Beispiel M15 lösche ich so über die IndexOf-Funktion:
Delphi-Quellcode:
If MyList.Indexof('M15')= -1 then
  begin
   Showmessage('M15 nicht gefunden.');
  end
 else MyList.Delete(MyList.Indexof('M15'));
Bei manchen Einträgen weiß ich das zwischen 2 Einträgen immer der gleiche Abstand ist bzw. immer das selbe steht. So konnte ich schon andere Einträge einfach über den bekannten Index +/- X löschen.
Allerdings verhält sich das nicht immer so, da die Anweisungen die nach dem oben zitierten Block in der Länge variieren.

Im Anhang befindet sich nun die Hauptfunktion, damit ihr sehen könnt, wie ich bisher vorgegangen bin. Die Vorsichtsmaßnahmen mit der Auswahl der richtigen Datei begründen sich darin, das wenn man 2x die selbe Datei wählt, ein zweiter Eintrag unter G98 z.B. gelöscht wird, der aber nicht gelöscht werden soll.
Ich will jetzt keinen Benutzer als unfähig darstellen, aber man hat sich schnell mal verklickt :-D
Da mir das zu heikel ist suche ich nach der anderen Möglichkeit, solche Einträge zu entfernen.

Mich wundert es das es wirklich keinen geben soll, der vor mir noch nicht dieses Problem hatte. Deshalb nehme ich stark an, das es eine bessere Methode gibt um so etwas zu realisieren. Die Stringliste war das erste was ich verstanden und ans laufen bekommen hab... :lol:

Ich hoffe das war jetzt ein Eintrag, der allen Regeln des Problembeschreibens gerecht wurde :wink:
Auch wenn es sehr wahrscheinlich die falsche Kategorie war, aber :pale: ich wusste nicht wohin sonst :cry:

MfG
Razeng

DeddyH 9. Apr 2009 17:28

Re: Unbekannte Einträge aus Stringlist löschen?
 
Du könntest die Liste in absteigender Reihenfolge durchiterieren, den aktuellen String nach der gesuchten Zeichenfolge durchsuchen und bei Treffer löschen.
Delphi-Quellcode:
for i := Liste.Count - 1 downto 0 do
  if Pos(Suchtext,Liste[i]) > 0 then
    Liste.Delete(i);
[edit] Wenn die gesuchte Zeichenfolge immer am Zeilenanfang steht, wäre eine explizite Pos-Abfrage auf 1 allerdings ungefährlicher. [/edit]

Jens Hartmann 9. Apr 2009 17:30

Re: Unbekannte Einträge aus Stringlist löschen?
 
Hallo,

wenn die Kompination bis 'S' immer gleich ist, müsste es zumindesten als String mit der suche durch POS gehen.

Gruß Jens

[EDIT] So wie DeddyH es geschrieben hat.

Razeng 12. Apr 2009 13:06

Re: Unbekannte Einträge aus Stringlist löschen?
 
Vielen Dank für die schnellen Antworten,
hatte leider keine Zeit mehr zwischendurch reinzuschauen.

Ich bin nicht auf die Idee gekommen, das man bei Pos auch einfach die Stringliste angeben konnte :oops: Auf die Funktion bin ich bei meiner Suche auch gestoßen.

Wieder was gelernt :-D
Vielen Dank nochmal!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz