![]() |
Komischer EConvertError
Hallo,
beim kopieren 2er Objekte mit Assign krieg ich einen EConvertError, obwohl beide Objekte vom gleichen Typen sind. Hier mal ein bisschen Code: Das Objekt
Delphi-Quellcode:
So dann hab ich mir einen Dialog gebastelt der eine zusätzliche Property Einstellung vom Typ TabConfig hat.
uses
Windows, Messages, SysUtils, Classes, Graphics, IniFiles; type TAnotherConfig = record UseUnicode: Boolean; WordWrap: Boolean; Font: TFont; end; TabConfig = class(TComponent) private { Private declarations } fConfig: TAnotherConfig; protected { Protected declarations } public { Public declarations } constructor Create(aOwner: TComponent); override; procedure SaveToFile(aFileName: TFileName); procedure LoadFromFile(aFileName: TFileName); published { Published declarations } property Config: TConfig read fConfig write fConfig; end; implementation constructor TabConfig.Create(aOwner: TComponent); begin inherited Create(aOwner); fConfig.Font := TFont.Create; with fConfig do begin UseUnicode := False; WordWrap := False; Font.Name := 'Courier New'; Font.Charset := DEFAULT_CHARSET; Font.Color := clBlack; Font.Size := 10; Font.Style := []; end; end; procedure TabConfig.SaveToFile(aFileName: TFileName); var aIniFile: TIniFile; begin aIniFile := TIniFile.Create(aFileName); with aIniFile do begin WriteBool('Option','UseUnicode', fConfig.UseUnicode); WriteBool('Option','WordWrap', fConfig.WordWrap); end; //WriteFontToIni(aIniFile, fConfig.Font, 'Option'); aIniFile.Free; end; procedure TabConfig.LoadFromFile(aFileName: TFileName); var aIniFile: TIniFile; begin aIniFile := TIniFile.Create(aFileName); with aIniFile do begin fConfig.UseUnicode := ReadBool('Option', 'UseUnicode', False); fConfig.WordWrap := ReadBool('Option', 'WordWrap', False); end; //ReadFontFromIni(aIniFile, fConfig.Font,'Option'); aIniFile.Free; end; end. Dialog
Delphi-Quellcode:
aufgerufen wird der spaß wie folgt:
type
TConfigDlg = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } fConfig: TabConfig; procedure SetConfig(aConfig: TabConfig); public { Public declarations } property Einstellung: TabConfig read fConfig write SetConfig; end; var ConfigDlg: TConfigDlg; implementation {$R *.dfm} procedure TConfigDlg.FormCreate(Sender: TObject); begin //TreeView.FullExpand; fConfig := TabConfig.Create(Self); end; procedure TConfigDlg.FormDestroy(Sender: TObject); begin fConfig.Free; end; procedure TConfigDlg.SetConfig(aConfig: TabConfig); begin try fConfig.Assign(aConfig); //Hier machts BOOOM!! except on E: EConvertError do ShowMessage(E.ClassName + #10#13 + E.Message); end; //Zuweisungen, ein paar Checkboxen kriegen nen haken oder nicht cbWordWrap.Checked := fConfig.Config.WordWrap; cbUseUnicode.Checked := fConfig.Config.UseUnicode; Font.FontName := fConfig.Config.Font.Name; FontColor.SelectedColor := fConfig.Config.Font.Color; end; end.
Delphi-Quellcode:
Also beim Assign knallts aus dem Grund, dass es wohl nicht die gleichen Typen seien (sinds doch oder?) lustigerweise steht nach der Exception jedoch in fConfig der Inhalt von aConfig und die Checkboxen werden richtig abgehakt etc, weiß wer rat woran es liegt? :stupid:
procedure TMainForm.ShowConfigDlgExecute(Sender: TObject);
begin with TConfigDlg.Create(Self) do begin try Config := meineConfig; ShowModal; finally Free; end; end; end; mfg phlux :hi: |
Re: Komischer EConvertError
Hi Christian,
du hast die Methoden Assign() und AssignTo() gar nicht überschrieben... Grüße vom marabu |
Re: Komischer EConvertError
Hi Marabu!
*gnarf* ich hab stundenlang in der Delphi-Hilfe geguckt und das Virtual übersehen, danke dir :) *methode überschreib* mfg phlux :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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 by Thomas Breitkreuz