![]() |
editX.text hochzählen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Ich bin gerade an einem Sudokuspiel beschäftigt, und habe ein Problem an der Engine, welche die Spiele generiert... Am besten wäre es vielleicht für die die Sudoku noch nicht kennen, sich einmal ![]() Total grob erklärt generiert die Engine für jedes Sudokuspielfeld eine Zahl. Dann setzt sie die Spielregeln ein, guckt nach Unstimmigkeiten und behebt diese. Mein Problem ist noch ganz am Anfang der Engine. Die Generation für jedes einzelne Sudokuspielfeld. Bei mir ist jeder Sudokublock wo man eine Zahl eintragen kann ein editX. Jetzt sind 81 editX entstanden, das X jeweils 1-81. Bei der generation dachte ich mir ich nehme eine einfach wie geniale repeat until schleife.. Ich habe das so versucht:
Delphi-Quellcode:
Ich möchte nämlich nicht für jedes editX ein einzigen Programmblock schreiben, wo diesem eine Zufallszahl zugewiesen wird.
var
i,calc : integer; name : string; begin randomize; i:=0; repeat i:=i+1; calc:=random(10)+1; name:='edit'+inttostr(i); name.text:=calc; // Hier liegt der Fehler: Delphi meint es sei eine Klasse ein Objekt oder ein Record erforderlich! until i=81; end; Meine Hoffnung war einfach das eine Variable von 1 bis 81 hochzählt, der wert der Variable an ein "edit" angehängt wird, und dann noch ein .text dran. Dann - dachte ich - hätte ich sozusagen das Objekt editX.text angesprochen. Geht aber leider nicht. Weiß jemand eine Lösung? Ich hoffe das wahr verständlich genug, hab keine Ahnung wie ich dieses Problem genau schildern soll.. :X Danke für jede Hilfe! |
Re: editX.text hochzählen
Hallo!
Da ist FindComponent dein Freund. such mal hier - da wirst du sicherlich fündig. Ciao Frederic |
Re: editX.text hochzählen
Hi,
Du willst einer String-Variable mit name.text etwas übergeben, wie soll das denn gehn!!! |
Re: editX.text hochzählen
Abgesehen davon, dass der Code von dir nicht wirklich sinnvoll ist, probiere es doch mit
Delphi-Quellcode:
dann kannst du z.B. über
var kaestchen: array[1..81] of TEdit;
Delphi-Quellcode:
drauf zugreifen.
kaestchen[34].Text := inttostr(calc)
Du musst zwar eine eigene Prozedur zum Erstellen und Platzieren der Editfelder erstellen aber ich denke mal das gleicht sich mit der einfachen Benutzung dann wieder aus... Flare |
Re: editX.text hochzählen
Zitat:
|
Re: editX.text hochzählen
Findcomponent() ist aber sehr langsam...ich habe selber keine Erfahrung mit diesem Befehl, ich berufe mich bei meienr Aussage also auf andere, wobei ich nicht mehr weiß, wer das gesagt hat (es waren aber einige).
Ich finde meine Lösung mit dem Array ist übersichtlicher. Aber es muss sowieso sacred entscheiden was er nehmen möchte :stupid: Flare |
Re: editX.text hochzählen
Zitat:
Dass dieses Greuel der Klickie-Buntie-Komponenten-Programmierung nicht mehr auszurotten ist, habe ich langsam begriffen und versuche schon gar nicht mehr, zum x-ten Mal auf ein Array oder eine Liste zu plädieren (Hauptsache es erreicht nie das .Net-Framework...). Aber diese Aussage finde ich schlicht und einfach schockierend. Am Besten ersetzen wir im gleichen Zuge sofort wieder jede Objektorientierung durch viel leichter zu verstehende prozedurale Vorgehensweisen. [edit]Grml, schon wieder einer ohne Warnung zuvorgekommen :stupid: . Ich bestreite nicht, dass FindComponent für den Anfänger und auf den ersten Blick leichter ist, mich hat nur das Wörtchen sinnvoll im Zusammenhang mit der Methode ziemlich gestört. [/edit] |
Re: editX.text hochzählen
man kann auch das Array mit FindComponent füllen. Somit ruft man FindComponent nur für jed4es Element 1 mal auf und danach kann man dann flink über das Array arbeiten.
Delphi-Quellcode:
var LCount: Integer;
begin for LCount := 1 to 34 do EditArray[LCount - 1] := TEdit(FindComponent('Edit' + LCount)); |
Re: editX.text hochzählen
Mir ist nie etwas anderes eingefallen als ein Grid zu nehmen. Wo liegt der Vorteil von 81 Edit-Controls?
Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz