Erstmal vielen Dank für die große Resonanz.
@haentschman
Den String erstelle ich mit
Delphi-Quellcode:
Memo1.clear;
Datei:='';
For Zeile:=0 to 8 do
For Spalte:=0 to 8 do
Datei:=Datei+StringGrid1.cells[Spalte,Zeile]; // in OnCreate wurde jedes Feld mit ' ' belegt
Memo1.Lines.Add(Datei);
und verarbeiten mit
Delphi-Quellcode:
For i:=1 to 81 do
begin
Spalte:=(i-1) mod 9;
Zeile:=(i-1) div 9; // i-1 da Zellen/Spalten von 0..8
StringGrid1.Cells[Spalte,Zeile]:=Datei[i];
end;
Ich verstehe jetzt nicht was daran so schwer sein soll? Oder habe ich einen Denkfehler, der das Problem unzulässig vereinfacht?
@p80286
Das ist ja das Problem mit dem Anpassen des Filters.
Delphi-Quellcode:
procedure TForm1.Speichern(Sender: TObject);
var Sudoku:TStringList;
begin
Sudoku:=TStringList.create;
SaveDialog1.Filter:='*.sud|*.Sud';
if SaveDialog1.execute
then
begin
Sudoku[0]:=Memo1.lines[0];
Sudoku.SaveToFile(SaveDialog1.FileName);
end;
Sudoku.Free;
end;
procedure TForm1.Sudokuladen1Click(Sender: TObject);
var Sudoku:TStringList;
begin
Sudoku:=TStringList.create;
OpenDialog1.Filter:='*.sud|*.SUD';
if OpenDialog1.execute
then
Sudoku.LoadFromFile(OpenDialog1.FileName);
Memo1.Lines.add(Sudoku[0]);
end;
Sudoku.Free;
end;
Im OpenDialog kann ich dann nur *.sud als Filter auswählen. Dennoch zeigt er keinerlei Anstalten mir dann die gespeicherte(n) Dateie(n) anzuzeigen. Und über den Explorer mit Rechtsklick>Eigenschaften zeigt er mir als Format nur "Datei" an.
Ich möchte aber, dass er mir im OpenDialog sämtliche *.sud-Dateien anzeigt. Aber irgendwie ignoriert er den Filter beim Speichern.
So funktioniert es auf alle Fälle nicht.
Und wenn ich als Filter *.txt eingebe, speichert er das auch im "Datei"-Format. Im Explorer zeigt er es mir aber nicht als WordPad-Datei oder so an. Sowohl .txt als auch .sud kann man mit Rechtsklick>Öffnen>Programm aus Liste auswählen>Wordpad(oder Editor) öffnen.
@Die Muhkuh
Aber wenn er "ausversehen" mal darin rumspielt, verändert er damit die gespeicherten Sudokus. Sind die Sudokus verändert, ist das nicht mehr umkehrbar und der Nutzer müsste sie löschen. Das möchte ich ihm nicht antun