Hallo,
Ich hab mal so ne art enigma programmiert und will sie jetzt optimieren,
indem ich die Baupläne nicht mehr in INIDateien speichere, sonder bloß
noch die Werte (also ohne <Eigenschaft> = <Wert>).
Dazu muss ich in der Datei lauter Zufallszahlen von 0 bis 255 speichern
und jede zahl darf nur einmal vorkommen.
Das hab ich so gemacht, vom Prinzip her gut finde ich:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.Button1Click(Sender: TObject);
const filename = 'c:\dokumente und einstellungen\jakob\eigene dateien\pascal\delphi\chiffre06\Bauplaene\WBpA.bpl';
var arr: array of byte; n,byt,rand: byte; Geschriebene: integer;
begin With TFileStream.Create(filename,fmCreate) do try Randomize; SetLength(arr,256); for n := 0 to 255 do arr[n] := n; for n := 0 to 255 do begin rand := Random(Length(arr)); byt := arr[rand]; arr[rand] := arr[Length(arr) - 1]; SetLength(arr,Length(arr) - 1); Geschriebene := Write(byt,1); ListBox1.items.Add(intTostr(byt)); end; finally Free; end; end; |
Mein Problem ist nun, dass in der Datei dann nur 128 Zeichen Stehen statt 256
und die Zeichen nicht die richtigen Werte haben.
In der ListBox1 steht es aber so wie ich es haben will und beim Debuggen hat
byt auch immer den richtigen wert.
ich bin mit meiner Weisheit am ende und nicht einmal mein Papa weiß woran das
liegt!
Ich wäre euch dankbar, wenn ihr den Quellcode kopieren könntet und vielleicht
mal bei euch testen könntet und vielleicht einen Fehler findet. Dazu müsst ihr
natürlich "filename" ändern.
Moderiert von
Gausi: Delphi-Tags hinzugefügt