AGB  ·  Datenschutz  ·  Impressum  







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

Komischer EConvertError

Ein Thema von phlux · begonnen am 21. Sep 2005 · letzter Beitrag vom 22. Sep 2005
Antwort Antwort
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#1

Komischer EConvertError

  Alt 21. Sep 2005, 21:53
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:
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.
So dann hab ich mir einen Dialog gebastelt der eine zusätzliche Property Einstellung vom Typ TabConfig hat.

Dialog
Delphi-Quellcode:
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.
aufgerufen wird der spaß wie folgt:

Delphi-Quellcode:
procedure TMainForm.ShowConfigDlgExecute(Sender: TObject);
begin
  with TConfigDlg.Create(Self) do
  begin
    try
      Config := meineConfig;
      ShowModal;
    finally
      Free;
    end;
  end;
end;
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?

mfg phlux
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Komischer EConvertError

  Alt 22. Sep 2005, 06:37
Hi Christian,

du hast die Methoden Assign() und AssignTo() gar nicht überschrieben...

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#3

Re: Komischer EConvertError

  Alt 22. Sep 2005, 13:58
Hi Marabu!
*gnarf* ich hab stundenlang in der Delphi-Hilfe geguckt und das Virtual übersehen, danke dir
*methode überschreib*

mfg phlux
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:37 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