Inkompatible Datentypen (Delphi)

  • Hi Freax,
    erstmal muss ich sagen, dass ich seit Jahren kein Wort Delphi mehr gesprochen habe ;)


    Folgendes Problem: Ich will per Knopfrdruck den Text aus einem Edit-Feld in die Lines einer Memobox oder als Item in einer Checklistbox übernehmen.
    Allerdings muckt der Debugger von wegen inkompatible Typen String und TStrings rum - 'strtofloat' und so Scherze kenn ich ja noch alle aber ein Kommando, dass einen String in einen mit TStrings kompatiblem Datetyp umwandelt kenn ich nicht.


    Kann mir einer helfen?


    -SF³

  • Re: Inkompatible Datentypen (Delphi)


    > Folgendes Problem: Ich will per Knopfrdruck den Text aus einem
    > Edit-Feld in die Lines einer Memobox oder als Item in einer
    > Checklistbox übernehmen.


    > Allerdings muckt der Debugger von wegen inkompatible Typen
    > String und TStrings rum


    Logisch. TStrings ist eine Liste von Strings, String ist nur eine Zeichenkette.


    Aber TStrings.Add(String); müsste das gewünschte Ergebnis bringen.


    HTH.


    N.

  • Mist ... wollte gerade antworten ...
    Eine Memobox ist Multi-line-fähig, das heißt, du kannst mehrere Zeilen drin speichern - jede Zeile wird dabei als String in einem String-Array abgelegt (TString) auf das du dann per Index zugreifen, bzw. per .Add einen neuen String einfügen kannst...

    -> Tristan @ Work <-
    --

  • Danke :top:
    In meinem Fall war es: checklistbox1.items.add(edit1.text);


    Aber so im Laufe der Zeit fallen mir sicher noch mehr fragen ein :D


    [Edit] Wie z.B. jetzt ;) Wie kann ich einen bestimmten Eintrag aus der checklistbox (nämlich den, der gecheckt ist) wieder löschen? [/Edit]
    [Edit2] Nochwas: Wie kann ich die lokale IP-Adresse ausgeben? [/Edit2]


    -SF³

  • Zumindest erstere Frage sollte zu beantworten sein...


    Im prinzip kannst du doch in einer Check-Listbox mehrere Einträge anhaken oder? Dementsprechend müsstest du wahrscheinlich eine Schleife basteln die jeden Eintrag auf die Eigenschaft "checked" (weiß nicht ob das so heißt - ist alles pure Theorie) überprüfen und dann soetwas wie checklistbox1.items.delete (a) machen, wobei a der Index deiner Schleife ist ...
    Hab seit Jahren kein Delphi mehr programmiert aber der Vorgang ist bei beinahe allen Sprachen gleich ...

    -> Tristan @ Work <-
    --

  • Gut also checklistbox1.items.delete(0) löscht das erste Element aus der Checkbox. Aber wie kontrolliere ich nun welcher Eintrag gecheckt ist?
    Die Checklistbox an sich hat kein Attribut 'checked' - sie selber kann ja auch nicht gecheckt werden aber ihre Items. Hmm... *ratlosbin*


    -SF³

  • Na irgendwie wird es doch wohl einen Gesamt-Item-Count geben oder? Also wieviele Items es insgesamt gibt in der Checkbox ... dann mußt du eine for-Schleife programmieren die durch jedes Item geht und überprüft:


    Weiß jetzt nicht mehr genau wie Schleifen in Delphi programmiert werden aber irgendetwas wie:


    integer a;
    for i:= 0 to checklistbox1.Items.count do
    begin
    if (checklistbox1.checked[i]) then checklistbox1.Items.Delete (i);
    end;


    schau doch mal in der Beschreibung der checklistbox nach - weiß nicht wie man die anzahl der einträge der checklistbox herausfindet ... irgendwie gibt es da bestimmt ein Count-property was wahrscheinlich count1 oder so heißt ... evtl. kannst du dir beim hinzufügen mit "Add" auch den Index zurück geben lassen und merken:


    Beispiel: count:= checklistbox1.Items.Add (edit1.text);


    Irgendwie so muß es gehen ... ist halt schwierig, daß ohne Delphi nachzustellen :)

    -> Tristan @ Work <-
    --

  • Wow das hat mir sogar weitergeholfen :)


    Nun steh ich vor dem nächsten Problem:


    Er sagt in der Zeile beginnend mit IF wären zu viele Parameter - Ich bin mir auch wegen der Syntax überhaupt nicht sicher. Delphi hab ich eigentlich nie so richtig gekonnt :D


    -SF³

  • du fragst sachen ... vielleicht mußt es so aussehen:


    IF (checklistbox1.selected[i]) then checklistbox1.Items.clear(i);


    also mit Klammer ... aber warum selected[i]? das ist doch bloß der selektierte Eintrag in der Liste und nicht der wo das Häkchen gesetzt ist oder ist es das was du willst?

    -> Tristan @ Work <-
    --

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!