Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi editX.text hochzählen (https://www.delphipraxis.net/68830-editx-text-hochzaehlen.html)

sacred 6. Mai 2006 09:14


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 diese 10zeilige Spielerklärung durchzulesen.

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:
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;
Ich möchte nämlich nicht für jedes editX ein einzigen Programmblock schreiben, wo diesem eine Zufallszahl zugewiesen wird.
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!

fkerber 6. Mai 2006 09:16

Re: editX.text hochzählen
 
Hallo!

Da ist FindComponent dein Freund. such mal hier - da wirst du sicherlich fündig.


Ciao Frederic

Zian 10. Mai 2006 20:07

Re: editX.text hochzählen
 
Hi,

Du willst einer String-Variable mit name.text etwas übergeben, wie soll das denn gehn!!!

Flare 10. Mai 2006 20:59

Re: editX.text hochzählen
 
Abgesehen davon, dass der Code von dir nicht wirklich sinnvoll ist, probiere es doch mit
Delphi-Quellcode:
var kaestchen: array[1..81] of TEdit;
dann kannst du z.B. über
Delphi-Quellcode:
kaestchen[34].Text := inttostr(calc)
drauf zugreifen.
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

pacman1986 10. Mai 2006 21:01

Re: editX.text hochzählen
 
Zitat:

Zitat von fkerber
Da ist FindComponent dein Freund.

das finde ich allerdings sinnvoller.

Flare 10. Mai 2006 21:06

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

Khabarakh 10. Mai 2006 21:08

Re: editX.text hochzählen
 
Zitat:

Zitat von pacman1986
Zitat:

Zitat von fkerber
Da ist FindComponent dein Freund.

das finde ich allerdings sinnvoller.

:shock: ²
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]

SirThornberry 10. Mai 2006 21:08

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));

marabu 10. Mai 2006 21:13

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 01:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz