TMemo::Lines vs. TMemo::Lines::Strings



  • Lable1->Caption=Memo1->Lines->Strings[0]; // So hat man es normaler Weise gelernt...
    Label1->Caption=Memo1->Lines[0]; // Geht auch... wo ist der Unterschied?
    


  • Laut BCB Hilfe:

    Der Operator [] ermöglicht den Zugriff auf die Strings in der Liste über den Index.

    AnsiString operator[](int Index) { return Strings[Index]; }

    Beschreibung

    Verwenden Sie den Operator [], um über den Index auf die Strings in der Liste zuzugreifen. Dieser Operator ist mit der Eigenschaft Strings äquivalent. So sind die beiden folgenden Anweisungen zulässig und führen zum gleichen Ergebnis:

    MyStrings->Strings[0] = "This is the first string";

    (*MyStrings)[0] = "This is the first string";

    Anders: es gibt keinen Unterschied...



  • Also ist es im Prinzip unsinnig, dieses TMemo::Lines::Strings... Danke, hat mir schon weitergeholfen.

    MfG Windoof



  • Unsinnig ist es nicht, da du ja sao keine neuen Einträge hinzufügen kannst. Ist halt nur eine Art Abkürzung, um auf vorhandene Zeilen zuzugreifen.



  • Hä? Werden Einträge nicht mit TMemo::Lines::Add(AnsiString s) hinzugefügt?



  • Ähmmm... hoppala... stimmt. Mein Fehler.



  • Egal, trotzdem danke. 👍



  • @Windoof: Würdest du dich mit OOP etwas auskennen (setz dich endlich mal mit den Konzepten auseinander) und dich mal e twas belesen, was TMemo::Lines eigentlich ist, würde dir plötzlich ein Licht aufgehen, dass TMemo::Lines::Strings nicht extra implementiert wurde, sondern durch die Vorgeschichte sozuagen einfach gegeben ist. Die Programmierer haben dann hald einfach noch für Lines den Operator [] implementiert.

    -junix



  • Ja, TMemo::Lines ist von der Klasse TStrings abgeleitet, und an dieser Klasse ist die Eigenschaft Strings eigentlich sinnlos, da das ein String-Array ist, aber bei TStrings[idx] auch bloß ein String ausgegeben wird. Ich kann mir vorstellen, dass dann nur zu TStrings::Strings gelinkt wird, dann wäre dieser Index-Operator auch sinnlos, oder es ist sinnlos, die Eigenschaft Strings als Public anzugeben. Aber 2 Elemente in einer Klasse, die das selbe bedeuten, sind im Prinzip sinnlos.


Anmelden zum Antworten