Text aus txts in Label laden: Jetzt aber richtig!
-
Kinder: Es besteht auch gar keine Veranlassung "Text" aufzulisten, da man den inhalt des Memo über Lines im OI bestimmen kann.
Referenz für Eigenschaften einer Komponente ist und bleibt die Borland Hilfe zur VCL.
Das Argument "wird nicht im OI angezeigt" ist also nichtig.
-junix
-
Wieso umständlich wenns auch mit einem verstecktem Memofeld geht?
ich behalte die erste lösung bei.
-
Weil ein Memofeld auch nur eine Stringliste kapselt. Du hast zwar noch ein paar weitere Eigenschaften, doch um die Daten an sich zu speichern, würde eine Stringliste vollkommen ausreichen.
Zudem würdest du dir Tipparbeit ersparen!
(*nicht ganz ernst gemeint*)
Bsp mit Memo:Label1->Caption = Memo1->Lines->Text;
Besp mit Stringliste:
Label1->Caption = StringList1->Text;
-
Genau das ist es "man würde code sparen"
Ich arbeite mit sehr viel Text und da geht das mit dem Memo auch wesentlich besser als jedesmal eine stringlist zu machen.
-
Was konkret geht mit dem Memo besser?
Wenn du keine grafische Ausgabe benötigst dann ist die Verwendung von TMemo anstelle von TStringList reine Ressourcenverschwendung.
-
Ist eine Geschmacksache!
Wenn du lieber im OI ein Memo verwendest und dann auf unsichtbar setzt, dann darfst du das gerne tun.
Nur wenn du den Text in diesem Memo sowieso nicht anzeigen willst, dann halte ich das für eine Speicherverschwendung.
Wenn du dann zur Laufzeit den Speicher reservierst, den du für eine Stringliste mit deinen Text brauchst und ihn danach auch wieder freigibst, dann arbeitest du meines Erachtens effektiver.
Ich will dir deine Lösung jetzt auch keines Falls schlecht reden, aber ich finde man sollte die Komponenten dafür nutzen, wofür sie eigentlich gedacht sind.
Und im Falle eines Memos ist das Anzeigen von Strings die Hauptaufgabe.
-
Original erstellt von JeGr:
Ist eine Geschmacksache!Nein. Für eine derartige Anwendung ist - wie Jansen dies schon erwähnt hat - Resourcenverschwendung, wenn man ein Memo als "StringList" vergewaltigt. alleine shcon durch den Anzeigeteil des Memos wird der Speicherbedarf und der Bedarf an Handles etc. auf WinAPI ebene ungleich grösser als wenn man einfach eine StirngList nehmen würde.
-junix
-
In ein paar Jahren werde ich an euch denken und mir sagen:
"Sie hatten doch so Recht!"
Aber ich hab 400 textdateien, und muss diese in labels ausgeben. Da kommt mir ein Memofeld als "Auslagerung" gerade recht, anstatt das ich immer mit stringlisten rumwurschteln darf.
-
Ähm, warum musst du 400 Textdateien in Labels ausgeben?
Du kannst doch ein Memo auch als ReadOnly deklarieren, wenn es dir darum geht, nur den Inhalt anzuzeigen.Und nochmals zum eigentlichen Thema zurück:
Deklarier doch eine TStringList im Private-Abschnitt deiner Klassendefinition.
Dann allokierst du im Konstruktor Speicher dafür.
Somit ist dann diese TStringList in allen Methoden der Klasse zugänglich.
Musst die Liste halt vor jedem neuen Einlesen erst wieder leeren.
Damit solltest du endgültig von deinem Memo wegkommen!
-
übersteigt meine Fähigkeiten
Was meinst du warum ich sage "in ein paar Jahren".
Und das mit dem Labels hat seine Gründe keine bange.
-
Volle Stimmung @junix, aber wohl ein Missverständnis. Der Text in Klammern + Prob in Anführungszeichen meinte, daß es nur ein scheinbares Prob sein könnte, dann die Anregung, immer die Referenz zu studieren.