AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

editX.text hochzählen

Ein Thema von sacred · begonnen am 6. Mai 2006 · letzter Beitrag vom 10. Mai 2006
Antwort Antwort
sacred

Registriert seit: 20. Jan 2006
43 Beiträge
 
#1

editX.text hochzählen

  Alt 6. Mai 2006, 09:14
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!
Miniaturansicht angehängter Grafiken
sudokuh_159.jpg  
Programmieren ist wie küssen:Man kann darüber reden,man kann es beschreiben,aber man weiß erst,was es bedeutet,wenn man es getan hat...
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: editX.text hochzählen

  Alt 6. Mai 2006, 09:16
Hallo!

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


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Zian

Registriert seit: 3. Apr 2006
2 Beiträge
 
#3

Re: editX.text hochzählen

  Alt 10. Mai 2006, 20:07
Hi,

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

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#4

Re: editX.text hochzählen

  Alt 10. Mai 2006, 20:59
Abgesehen davon, dass der Code von dir nicht wirklich sinnvoll ist, probiere es doch mit
var kaestchen: array[1..81] of TEdit; dann kannst du z.B. über
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
Willy Scheibel
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#5

Re: editX.text hochzählen

  Alt 10. Mai 2006, 21:01
Zitat von fkerber:
Da ist FindComponent dein Freund.
das finde ich allerdings sinnvoller.
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#6

Re: editX.text hochzählen

  Alt 10. Mai 2006, 21:06
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


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#7

Re: editX.text hochzählen

  Alt 10. Mai 2006, 21:08
Zitat von pacman1986:
Zitat von fkerber:
Da ist FindComponent dein Freund.
das finde ich allerdings sinnvoller.
²
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 . 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]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: editX.text hochzählen

  Alt 10. Mai 2006, 21:08
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));
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: editX.text hochzählen

  Alt 10. Mai 2006, 21:13
Mir ist nie etwas anderes eingefallen als ein Grid zu nehmen. Wo liegt der Vorteil von 81 Edit-Controls?

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 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