![]() |
Hilfe mit Dateien
Ich habe schon mal eine Frage über den allgemeinen Dateiumgang gestellt aber ich finde mich nicht im Dschungel der Befehle zurecht! :(
Ich habe folgendes Problem: Mein Ziel ist: Ich möchte genau 81 Zahlen (von 0 bis 9) in eine Textdatei speichern damit ich sie später laden kann
Delphi-Quellcode:
Meine Fragen:
var Zahl : array [1..9, 1..9] of Integer;
begin //Befehl zum Öffnen der Datei for x := 1 to 9 do for y := 1 to 9 do Zahl[x, y] := //Befehl die nächste Zahl aus der Datei zu laden //Befehl zum Schließen der Datei end; 1. Welche drei Befehle muss ich da einsetzten? 2. Wie muss ich die Zahlen in der TXT Datei schreiben, damit Delphi sie lesen kann? |
Re: Hilfe mit Dateien
Hi, Du solltest es dir einfach machen und über eine Stringliste gehen.
Dort kannst Du erst alle Zahlen eintragen (oder auch aus einer Datei laden) und dann einfach auslesen. Dadurch sparst Du dir auch das ganze Dateihandling. Speichern:
Delphi-Quellcode:
Laden:
var SL: TStringList; Zahl : array [1..9, 1..9] of Integer;
begin SL := TStringList.Create; try for x := 1 to 9 do for y := 1 to 9 do SL.Add(IntToStr(Zahl[x, y])); SL.SaveToFile('c:\temp\test.txt'); finally SL.Free; end; end;
Delphi-Quellcode:
var SL: TStringList; Zahl : array [1..9, 1..9] of Integer; Index: Integer;
begin SL := TStringList.Create; try SL.LoadFromFile('c:\temp\test.txt'); Index := 0; for x := 1 to 9 do for y := 1 to 9 do begin Zahl[x, y] := StrToInt(SL[Index]); inc(Index); end; finally SL.Free; end; end; |
Re: Hilfe mit Dateien
Cool! :???:
Danke - das kann ich sehr gebrauchen! :thumb: :wink: |
Re: Hilfe mit Dateien
Hmm...
Irgendwie klappt das nicht... :( Wenn ich meine Textdatei öffne sehe ich nir föllig falsche Zahlen... |
Re: Hilfe mit Dateien
wie sehen denn die Zahlen aus, wenn Du die Datei mit dem Notepad öffnest.
Wie schreibst Du die Zahlen in die Datei, als Integer oder String? Grüße Klaus |
Re: Hilfe mit Dateien
Zitat:
lass mal ein bisschen quellcode sehen... |
Re: Hilfe mit Dateien
Und was ist, wenn du die Datei mit der obrigen Methode ausliest?
PS: wenn di die Zahlen nicht im Textformat (in der Datei) benötigst ... (damit wird die Datei genau 76 Byte groß, was wohl kleiner ist, als es meistens der Fall ist)
Delphi-Quellcode:
Type TZahl = packed Array[1..9, 1..9] of Integer;
Var Zahl: TZahl; Var myFile: File of TZahl; //schreiben AssignFile(myFile, ...); Rewrite(myFile); Write(myFile, Zahl); CloseFile(myFile); //lesen AssignFile(myFile, ...); Reset(myFile); Read(myFile, Zahl); CloseFile(myFile); |
Re: Hilfe mit Dateien
Zitat:
Delphi-Quellcode:
Also raus mit der Sprache, wie hast du noch 5 Bytes eingespart?
type
TZahl = packed array [1..9, 1..9] of 0..9; Gruß Hawkeye |
Re: Hilfe mit Dateien
da er nur zahlen von 0-9 verwendet könnte er sogar noch 50% der dateigröße sparen, wenn
er prob byte 2 zahlen abspeichert. um die 9 darzustellen braucht man 4 bits, daher kann man in einem byte 2 zahlen unterbringen. aber ich denke das würde in diesem zusammenhang hier das ganze nur unnötig verkomplizieren! ;) |
Re: Hilfe mit Dateien
Danke himitsu :thumb:
Die Befehle habe ich gesucht! Mein Programm sieht jetzt so aus:
Delphi-Quellcode:
Es ist nur ein Testprogramm also ist es nichts Bewundernswertes...
procedure TForm1.FormActivate(Sender: TObject);
var x, y : Integer; begin for x := 1 to 9 do for y := 1 to 9 do begin Edit[x, y] := TEdit.Create(Self); Edit[x, y].Parent := Form1; Edit[x, y].Height := 25; Edit[x, y].Width := 25; Edit[x, y].Text := '0'; end; for x := 1 to 9 do begin Edit[x, 1].Top := 8; Edit[x, 2].Top := 32; Edit[x, 3].Top := 56; Edit[x, 4].Top := 88; Edit[x, 5].Top := 112; Edit[x, 6].Top := 136; Edit[x, 7].Top := 168; Edit[x, 8].Top := 192; Edit[x, 9].Top := 216; end; for y := 1 to 9 do begin Edit[1, y].Left := 8; Edit[2, y].Left := 32; Edit[3, y].Left := 56; Edit[4, y].Left := 88; Edit[5, y].Left := 112; Edit[6, y].Left := 136; Edit[7, y].Left := 168; Edit[8, y].Left := 192; Edit[9, y].Left := 216; end; end; procedure TForm1.Button1Click(Sender: TObject); Var x, y, z : Integer; Var tmp : String; Var myFile: File of Integer; begin tmp := Edit1.Text; //schreiben AssignFile(myFile, tmp); Rewrite(myFile); for x := 1 to 9 do for y := 1 to 9 do begin z := StrToInt(Edit[x,y].Text); Write(myFile, z); end; CloseFile(myFile); //lesen AssignFile(myFile, tmp); Reset(myFile); for x := 1 to 9 do for y := 1 to 9 do begin Read(myFile, z); Edit[x,y].Text := IntToStr(z); if z = 0 then Edit[x,y].Text := ''; end; CloseFile(myFile); end; :cheers: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz