AGB  ·  Datenschutz  ·  Impressum  







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

Kniffliges Problem beim Serialisieren

Ein Thema von SMALLID · begonnen am 4. Feb 2007 · letzter Beitrag vom 10. Feb 2007
Antwort Antwort
Seite 3 von 3     123   
SMALLID

Registriert seit: 10. Aug 2004
78 Beiträge
 
#21

Re: Kniffliges Problem beim Serialisieren

  Alt 9. Feb 2007, 19:58
Ja das hatte ich wieder als "Workaround" auch schon im Sinn. Der Owner ist ja meines Wissens nach eine Read-Only-Eigenschaft. Ich müsste den dann also explizit nochmal schreiben (obwohl allein durch die Dateistruktur ja schon klar ist, welche Komponente zu wem gehört) und dann mit der Methode "InsertComponent" arbeiten. Also erst laden, dann schauen welcher Owner in der Datei-Property steht, und die Komponente dorthin einfügen.

Das ist aber so ... unelegant. Es muss doch eine elegante Möglichkeit, quasi äquivalent zu "getChildren" beim Speichern geben ...
Muh
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#22

Re: Kniffliges Problem beim Serialisieren

  Alt 10. Feb 2007, 09:38
Hallo,
wenn ich es richtig verstanden habe geht es darum die Eingaben in den Controls über das Streamingsystem zu speichern.
Ich verfolge den Thread schon einige Zeit. Leider habe ich in den Untiefen meines Archivs erst jetzt die Lösung gefunden.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StatusBarEx, Menus, StdCtrls;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Beenden1: TMenuItem;
    SB: TStatusBarEx;
    ffnen1: TMenuItem;
    Memo1: TMemo;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    OpenDialog: TOpenDialog;
    procedure Beenden1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure ffnen1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(aOwner: TComponent); override;
  end;

var
  Form1: TForm1;

implementation

uses Utils1;

{$R *.DFM}

procedure TForm1.Beenden1Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  fs: TFilestream;
  FFilename : String;
begin
  FFilename:=ApplicationPath+'controls.sav';
  fs:= TFilestream.Create(FFilename, fmCreate);
  try
    fs.WriteComponent(self);
  finally
    fs.free;
  end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  WriteToStatusBar(SB,'Writecomponent Test',0);
end;

procedure TForm1.ffnen1Click(Sender: TObject);
begin
  If Not Opendialog.Execute then Exit;
  Memo1.Lines.LoadFromFile(Opendialog.Filename);
end;

constructor TForm1.Create(aOwner: TComponent);
var
  fs: TFileStream;
  FFilename : String;
begin
  FFilename:=ApplicationPath+'controls.sav';
  if FileExists(FFilename) then
    begin
      CreateNew(aOwner); // Hier ist der Trick
      fs:= TFileStream.Create(FFilename, fmOpenread or fmShareDenyWrite);
      try
        fs.ReadComponent(self);
      finally
        fs.free;
      end;
    end
  else
    inherited Create(aOwner);
end;

end.
Ein Blick in die OH unter CreateNew sollte als Erklärung ausreichen
Angehängte Dateien
Dateityp: zip createnew_915.zip (232,6 KB, 4x aufgerufen)
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 18:21 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