AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Sudoku Zufallsgenerator mit Anzeige in 9*9 Stringrid
Thema durchsuchen
Ansicht
Themen-Optionen

Sudoku Zufallsgenerator mit Anzeige in 9*9 Stringrid

Ein Thema von Delphi-Narr · begonnen am 24. Mai 2010 · letzter Beitrag vom 28. Mai 2010
 
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#1

Sudoku Zufallsgenerator mit Anzeige in 9*9 Stringrid

  Alt 24. Mai 2010, 11:37
Hallo,

da es viel Bedarf nach Sudokugeneratoren gibt, deren Ergebnisse auch in anderen Programmen nutzbar sind, habe ich ein kleines Tool geschrieben, welches ein Sudoku generiert und an ein anderes Programm übergibt.

Die SudokuCreate.Exe in der zip Datei muss nur in das Verzeichnis kopiert werden, in dem sich die aufrufende exe befindet.

Um dann ein Sudoku ins Programm zu laden, muss nur folgender Code eingearbeitet werden:
Delphi-Quellcode:

uses ..., ShellAPI;

//...

type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    procedure GetSudokuClick(Sender: TObject);
    procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA; //<- Die Zeile ist wichtig!

//...

var
  Form1: TForm1;
  S:array [0..8] of array [0..8]of integer;
 {In diesem Array ist später das Sudoku gespeichert, aufgerufen werden die Werte über S[Reihe][Spalte]}

implementation


//Hier werden die empfangenen Daten verarbeitet

procedure TForm1.WMCopyData(var Msg: TWMCopyData);
var x,y,i,j:integer;
    p:string;
begin
     j:=1;
     p:=string(PChar(Msg.CopyDataStruct.lpData));
     for x:=0 to 8 do
     for y:=0 to 8 do
     begin
          S[x][y]:=StrToInt(p[j]);
          j:=j+1;
     end;

     for i:=0 to 8 do
         for j:=0 to 8 do
         begin
              Stringgrid1.Cells[j,i]:=IntToStr(S[i][j]);
         end;
end;


procedure TForm1.GetSudokuClick(Sender: TObject); //Muss aufgerufen werden, wenn man ein Sudoku erstellt haben will
var
  aCopyData: TCopyDataStruct;
  p: PChar;
begin
//Falls die Sudokucreate.exe nicht im Programmverzeichnis liegt, muss dies angepasst werden
  winexec(ExtractFilePath(ParamStr(0))+'Sudokucreate.exe', SW_SHOWNORMAL);

  
  p := PChar('TForm1'); //Der unter type deklarierte Name muss hier eigetragen werden

  with aCopyData do begin
    dwData := 0;
    cbData := StrLen(p) + 1;
    lpData := p;
  end;
 
  // Die Fensterdaten werden an die SudokuCreate.exe übergeben, damit die Daten auch zurückkommen
  SendMessage(FindWindow('TSDokCreate', nil), WM_COPYDATA, Longint(Handle),
              Longint(@aCopyData));

end;
Im Anhang befindet sich sowohl die SudokuCreate.exe alleine (SudokuCreate.zip) und ein Testprogramm, welches den Code zum Aufruf
enthält und anwendet.

Liebe Grüße!
Angehängte Dateien
Dateityp: zip testprogramm_462.zip (382,2 KB, 25x aufgerufen)
Dateityp: zip sudokucreate_618.zip (175,9 KB, 26x aufgerufen)
  Mit Zitat antworten Zitat
 


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 03:49 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