Bestimmtes Edit feld auswählen
-
Hallo
@ loos : Nicht wenn man mal an das Laufzeitverhalten denkt. In einem Array wird gezielt zugegriffen. Bei deiner Variante werden jedesmal alle Komponenten bis zum gefundenen durchlaufen. Stell dir das mal bei ein paar Aufrufen pro Sekunde und 200 Komponenten vor.
Was ist also dagegen einzuwenden, gleich Laufzeit-Optimiert zu schreiben? Oder gehörtst du auch zu den Leuten, die nur bei den Quellcode-Zeilen optimieren wollen?bis bald
akari
-
Zumal die Array Variante auch vom Quellcode her nicht viel größer sein sollte. Ich denke mit 2 Zeilen mehr ist man dabei. Man könnte auch eine std::map nehmen, da wird die Verwaltung und der Zugriff noch einfacher.
-
Stell dir das mal bei ein paar Aufrufen pro Sekunde und 200 Komponenten vor.
200 Komponenten auf einer Form sind in der Tat schwer vorzustellen.

Und selbst wenn.
Aufruf erfolgt nur durch OnButtonClick.Was ist also dagegen einzuwenden, gleich Laufzeit-Optimiert zu schreiben? Oder gehörtst du auch zu den Leuten, die nur bei den Quellcode-Zeilen optimieren wollen?
Ich gehöre zu den Leuten die einschätzen können, welcher Aufwand für eine Lösung vertretbar ist.

-
Ich denke mit 2 Zeilen mehr ist man dabei
Lol.
-
Hallo
200 Komponenten auf einer Form sind in der Tat schwer vorzustellen.

Und selbst wenn.
Aufruf erfolgt nur durch OnButtonClick.Ich habe in meinem aktuellen Projekt eine Form mit einem Texteditor, der ein paar Dutzende Buttons für Formatierungen und sonderfunktionen bietet. Daneben noch ein paar Dutzende nichtvisueller Komponenten wie Actions, Verwaltungsobjekte... da kommen locker 200 Komponenten zusammen.
Teilweise werden einige der Controls nach jeder kleinsten Änderung an Daten oder Form geupdatet, könnte also sehr häugif sein.
Es wäre wirklich sehr lahm, um diese Controls zu finden jedesmal über dutzende Controls zu iterieren und einen AnsiString-Vergleich durchzuführen. Stattdessen wird einfach über ein Array in einem Durchgang das richtige ausgewählt.Ich gehöre zu den Leuten die einschätzen können, welcher Aufwand für eine Lösung vertretbar ist.
Aber offenbar nicht zu den Leuten, die sich mit den Hintergründen vorhandener Funktionen oder langfristige Planung auskennen.
bis bald
akari
-
Aber offenbar nicht zu den Leuten, die sich mit den Hintergründen vorhandener Funktionen oder langfristige Planung auskennen.
Schwachsinn.
Du scheinst zu den Leuten zu gehören, die aus jeder Mücke einen Elefanten machen und so den Bezug zur Realität verlieren.
Aber anscheinend bist du wohl noch nicht solange dabei ...Klink mich jetzt hier aus.
Kannste weiter rumtrollen.
-
Ok, mal für ne map
// Typ der map std::map<AnsiString,TEdit*> editmap; // TEdit hinzufügen TEdit *editneu = new TEdit(this); // der ganze Rest zum Einfügen // und jetzt rein in die map editmap[editneu->Name] = editneu; // löschen aus der map editmap.erase(edittoerase->Name);Klar muß man die map erst füllen, aber das kann man durch einmaligen Aufruf über Components am Anfang machen. Bei Verwendung von vector alternativ mit push_back sowie find/erase. Hier braucht man noch einen sort-Aufruf.
-
loos schrieb:
Aber anscheinend bist du wohl noch nicht solange dabei ...
Da wäre ich mir nicht so sicher.
loos schrieb:
Kannste weiter rumtrollen.
Das ist kein getrolle, sondern aus Erfahrung gewonnenes Wissen.
Ich schließe mich akari und Braunstein an.
Laut Borland ist die Verwendung der RTTI grundsätzlich mit einem 'performance-hit' verbunden.
-
Da wäre ich mir nicht so sicher.
Bin ich mir aber. Da so eine Einstellung für die Praxis absolut ungeeignet ist.
Ich schließe mich akari und Braunstein an.
Wie war das ? Eine Krähe (geloggter) hackt der anderen ...
Aber genug. Schon viel zuviel Zeit hier verschwendet.
-
loos schrieb:
Da wäre ich mir nicht so sicher.
Bin ich mir aber. Da so eine Einstellung für die Praxis absolut ungeeignet ist.
Ich schließe mich akari und Braunstein an.
Wie war das ? Eine Krähe (geloggter) hackt der anderen ...
Aber genug. Schon viel zuviel Zeit hier verschwendet.
So sieht das aus.
-
Also ich finde es immer wieder sehr lehrreich, wenn hier verschiedene Lösungsansätze diskutiert werden.

Schade finde ich, wenn jemand daraus einen Stellungskrieg macht. Ich, als C++ Dummi kann verstehen, welchen Reiz eine einfache (Entwurfszeit)Lösung ausübt. Jedoch fliegt die Kanonenkugel schneller (und weiter) als der Pfeil meines Flitzebogens. Und wer weiß. Vielleicht brauch ich eines Tages diese Reichweite. Blöd ist dann bloß, wenn ich dann immer noch nur mit dem Flitzebogen schießen kann.

-
Nun sagen wir es so:
Man kann die 'Loossche Lösung' einsetzen, wenn man die Funktion tatsächlich nur hier und da mal per Button-Klick auslöst.Wenn das später, oder in einem anderen Prujekt, in einer Schleife laufen soll, wird das recht langsam sein. Hier wäre eine Array-Lösung definitiv vorzuziehen.
Wenn man die Edit-Felder nicht dynamisch erzeugen will, kann man auch beide Versionen mischen. Den Vorschlag von Loos, um beim Programmstart alle Adressen der Edit-Felder in ein Array zu schreiben. Und in der / den Schleifen dann das Array zu verwenden.Grüße Joe_M.