AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe mit Dateien

Ein Thema von qb-tim · begonnen am 16. Mai 2006 · letzter Beitrag vom 17. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#1

Hilfe mit Dateien

  Alt 16. Mai 2006, 12:05
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:
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;
Meine Fragen:

1. Welche drei Befehle muss ich da einsetzten?
2. Wie muss ich die Zahlen in der TXT Datei schreiben, damit Delphi sie lesen kann?
  Mit Zitat antworten Zitat
KrasserChecker

Registriert seit: 21. Jul 2004
120 Beiträge
 
#2

Re: Hilfe mit Dateien

  Alt 16. Mai 2006, 12:15
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:
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;
Laden:
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;
  Mit Zitat antworten Zitat
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#3

Re: Hilfe mit Dateien

  Alt 16. Mai 2006, 13:00
Cool!

Danke - das kann ich sehr gebrauchen!

  Mit Zitat antworten Zitat
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#4

Re: Hilfe mit Dateien

  Alt 16. Mai 2006, 18:38
Hmm...

Irgendwie klappt das nicht...

Wenn ich meine Textdatei öffne sehe ich nir föllig falsche Zahlen...
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Hilfe mit Dateien

  Alt 16. Mai 2006, 18:40
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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Hilfe mit Dateien

  Alt 16. Mai 2006, 18:46
Zitat von qb-tim:
Hmm...

Irgendwie klappt das nicht...

Wenn ich meine Textdatei öffne sehe ich nir föllig falsche Zahlen...
wie und wo generierst du die Zahlen?
lass mal ein bisschen quellcode sehen...
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#7

Re: Hilfe mit Dateien

  Alt 16. Mai 2006, 18:59
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);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Hilfe mit Dateien

  Alt 16. Mai 2006, 23:22
Zitat von himitsu:
damit wird die Datei genau 76 Byte groß, was wohl kleiner ist, als es meistens der Fall ist
Mit der folgenden Deklaration komme ich auf 81 Bytes:

Delphi-Quellcode:
type
  TZahl = packed array [1..9, 1..9] of 0..9;
Also raus mit der Sprache, wie hast du noch 5 Bytes eingespart?

Gruß Hawkeye
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#9

Re: Hilfe mit Dateien

  Alt 16. Mai 2006, 23:54
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!
  Mit Zitat antworten Zitat
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#10

Re: Hilfe mit Dateien

  Alt 17. Mai 2006, 14:37
Danke himitsu

Die Befehle habe ich gesucht!

Mein Programm sieht jetzt so aus:

Delphi-Quellcode:
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;
Es ist nur ein Testprogramm also ist es nichts Bewundernswertes...

  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:58 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