Autor Beitrag
Acehigh
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 07.05.10 23:38 
Hallo!

Ich bin neu hier und auch Anfänger in Delphi und hoffe hier ein paar gute Tips mitnehmen zu können.

Ich hab die Aufgabe ein Programm für ein Sudoku zu schreiben(Datein im Anhang). Ist erst mein drittes "Projekt", funktioniert aber soweit.Meine Frage ist jetzt wie ich das Programm optimieren kann?
Wie schaffe ich es, dass ich nicht immer jedes Edit Feld einzelnd ansprechen muss wenn ich den Style oder die Size ändern will?
Ist die Testfunktion so weit ok?
Der Lösungsbutton funktioniert noch nicht. Wie programmiere ich eine zufällige Lösung?
Sonst noch Verbesserungsvorschläge?

Schönen Abend noch!

Gruß Acehigh

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Einloggen, um Attachments anzusehen!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 07.05.10 23:55 
Zwecks Ansprechend der Edits siehe FindComponent.

Zum Optimieren empfiehlt es sich, die visuellen Komponenten nur zur Anzeige herzunehmen und intern z.B. mit Arrays zu arbeiten. Damit bekommst Du einiges mehr an Geschwindigkeit raus.

Zum Lösen: Schau Dir mal Breitensuche bzw. Tiefensuche an. Auch sonst findest du zum Thema Sudoku (すどく) einiges hier im Forum. Einfach mal suchen ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Acehigh Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 08.05.10 01:15 
Danke

Ich hab mich gleich mal an das FindComponent gemacht und bin bisher so weit gekommen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TFormSudoku.SButtonBoldClick(Sender: TObject);
 var i : integer;
      E: TEdit;
begin
 for i := 11 to 11 do
    begin
     E := TEdit(FindComponent('E' + IntToStr(i)));
     E.Font.Style := [fsBold];
    end;
end;

Das Problem ist jetzt das die Edits E11,E12,E13,E14,E21...E44 heißen und das Programm
abstürzt wenn I := 11 to 44 schreiben würde. Wie kann ich das lösen außer das ich die
Edits umbenenne?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Sa 08.05.10 04:26 
Du könntest ev. auch ein StringGrid verwenden, was das ganze ohne FindComponent löst.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Acehigh Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 08.05.10 17:58 
Beim StringGrid und bei der Breitensuche finde ich irgendwie keinen Ansatz oder weiß nicht wie so etwas aufgebaut wird. Könnt ihr mir etwas mehr helfen?

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 09.05.10 22:02 
Wie meinst du das? Das StringGrid legst du einfach auf das Formular. Über Cells kannst du dann auf die einzelnen Zellen zugreifen.
Wie das dann aussieht siehst du z.B. bei meinem Sudoku-Progrämmchen:
www.delphi-forum.de/viewtopic.php?t=48160