Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: EDIT Inhalte in Datei abspeichern und wieder laden

  Alt 5. Jan 2008, 13:08
Die Idee mit EINEM Ini-File finde ich sehr schön. Ich würde allerdings nicht ein Edit4-Feld nehmen, sondern beim Klicken auf den Speichern- bzw. Laden button einen InputDialog bzw. eine Combobox anzeigen. So ist der Ablauf für den User besser nachvollziehbar. Ausserdem wäre es zu überlegen, die Ini nicht ins Programmverzeichns zu legen.


Ungeachtet dessen, dass ich (soweit ich das Projekt überblicke) wahrscheinlich auch die Ini-Lösung vorziehen würde, möchte ich noch kurz die programmtechnische Umsetzung von Andis eigener Idee zeigen Ich nehme für die Dateiarbeit ein TFilestream. Wenn man die Datei auch händig bearbeiten soll, wäre ein Textfile besser. Aber in dem Fall ist die Ini-Lösung gleich noch 10mal besser.

Delphi-Quellcode:
uses Dialogs;

procedure TForm1.SpeichernButtonClick(Sender: TObject);
var SaveDialog:TSaveDialog;
    Datei:TFileStream;
    i:integer;
    stext:string;
    textlength:integer;
begin
  SaveDialog:=TSavedialog.Create(nil);
  try
    SaveDialog.Filter:='Motoren (*.mot)|*.mot';
    savedialog.DefaultExt:='mot';
    if SaveDialog.Execute then
    begin
      Datei:=TfileStream.Create(SaveDialog.FileName,fmCreate);
      try
        for i:=1 to 3 do
        begin
          stext:=TEdit(findcomponent('Edit'+inttostr(i))).Text;
          textlength:=length(stext);
          Datei.Write(textlength,sizeof(textlength));
          Datei.Write(stext[1],textlength);
        end;
      finally
        Datei.free;
      end;
    end;
  finally
    SaveDialog.Free;
  end;
end;

procedure TForm1.LadenButtonClick(Sender: TObject);
var OpenDialog:TOpenDialog;
    Datei:TFileStream;
    i:integer;
    stext:string;
    textlength:integer;
begin
  OpenDialog:=TOpendialog.Create(nil);
  try
    OpenDialog.Filter:='Motoren (*.mot)|*.mot|Alle Dateien|*.*';
    if OpenDialog.Execute then
    begin
      Datei:=TfileStream.Create(OpenDialog.FileName,fmOpenRead);
      try
        for i:=1 to 3 do
        begin
          Datei.Read(textlength,sizeof(textlength));
          setlength(stext,textlength);
          Datei.Read(stext[1],textlength);
          TEdit(findcomponent('Edit'+inttostr(i))).Text:=stext;
        end;
      finally
        Datei.free;
      end;
    end;
  finally
    OpenDialog.Free;
  end;
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat