Stringexistens überprüfen



  • Gut ich hab weis dass ich mich oben ziemlich ungeschickt artikuliert habe. Ich habe einen StringList mit dem Namen string. In diese Liste lade ich aus einer Datei einige Strings und ich habe das Problem, wenn eine Zeile in der Textdatei leer ist, kommt beim Ausführen der Datei eine Fehlermeldung und deshalb will ich mit einer if-Anweisung testen lassen, ob zum Beispiel der 3. String (Strings[2]) existiert. Und so wollte ich wissen wie das geht. Die Hilfe hat mir auch nicht geholfen.
    mfG Tim


  • Mod

    Hallo

    wie schon so oft

    FAQ
    F1-taste

    (da war doch was mit der laenge)

    MfG
    Klaus



  • Was füreine Fehlermeldung? Den String auf IstLeer()* zu prüfen hast du schon versucht?

    -junix

    😉 *mitzaunpfahlwedel*



  • wenn string->Strings[2] == "" dann is es leer. was willst du mehr?



  • Wenn ich die Datei in den String laden lasse bin ich aufgrund des Progs gezwungen die Datei Zeilenweise einlesen zu lassen. Wenn nun in der Textdatei dzum Beispiel die 3. Zeile leer ist, wird der String[2] einfach weggelassen. Ich habe diese überprüft in dem ich gesagt habe das **Edit1->Text = string->Strings[2];**ist und da kamm auch die Fehlermeldung und als ich im Edit1 mir die Anzahl der Strings über string->count abgefragt habe fehlte ein String und dies war eben der String wo die Zeile in der Datei leer ist.
    Und aus dem Grund wollt ich einfach nur testen ob es den String 2 gibt und nicht den Inhalt oder die Länge, weil wenn ich von einen nicht existierenden String die Länge messen will gibt es ERROR und auf Leer kann ich den nicht existierenden String auch nicht testen, gibt auch ERROR.
    Gibt es überhaut eine Möglichkeit zu testen ob ein bestimmter String wo ich nur die Stringnummer kenne existiert? 😕



  • -Tim- schrieb:

    [...]dzum Beispiel die 3. Zeile leer ist, wird der String[2] einfach weggelassen.[...]

    Da wird garnix weggelassen. Nur spuck doch endlich mal die Fehlermeldung aus, die du erhälst....

    -junix



  • Also die Fehlermeldung ist im Borland:

    Debugger Exception Notification
    Project Project1.exe raised exception class EStringListError with message 'List index out of bounds(5)'.Process stopped.Use Step or Run to continue.

    und wenn ich die EXE-Datei ausführe erscheint:

    Project1
    List index out of bounds(5)

    Die 6. Zeile in der Textdatei ist wie gesagt leer und die 5 ist glaube der 5. String.



  • es kann schon vorkommen dass die letzte leere zeile weggelassen wird. aber nicht zwischendrin
    wenn zahl zeilen in der datei grösser ist als zahl in der stringlist, dann nehmen wir mal an, dass die fehlenden zeilen leer sind. und beim durchlauf der liste prüft man nicht die anzahl der zeilen in der datei, sonder in der liste, um solche kindische fehlermeldungen zu vermeiden.



  • Das ist eigentlich keine dumme Idea die Zeilenanzahl und die Stringanzahl abzugleichen und wenn beide Anzahlen unterschiedlich sind wird ja der Quelltext in der if-Schleife nicht ausgeführt.
    Danke das du mich auf die Lösung gebracht hast, an so etwas einfaches habe ich nicht gedacht 🙂 .
    ➡ Danke für deine (Xqgene) bzw eure (alle anderen) Hilfe.



  • Ich habe das Gefühl, es geht weniger darum, ob ein String leer ist oder nicht, als vielmehr darum, wieviele Strings in einer TStringList sind.

    Tim: KlausB hat Recht. FAQ, F1-Taste, Menü "Hilfe"->"C++ Builder Hilfe", etc.

    Meine Empfehlung, Schritt für Schritt:
    1. Geh in die C++ Builder - Hilfe
    2. Klicke auf das Register "Suchen". Trage dort "TStringList" ein.
    3. Wähle unten als Thema die Beschreibung zu TStringList aus und "OK"
    4. Lesen. Es gibt reichlich Material unter "Verwenden von TStringList".

    Besonderer Tipp: die Eigenschaft "Count" 😉


Anmelden zum Antworten