AGB  ·  Datenschutz  ·  Impressum  







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

HexEditor

Ein Thema von Jazzman_Marburg · begonnen am 8. Mai 2010 · letzter Beitrag vom 9. Mai 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: HexEditor

  Alt 9. Mai 2010, 14:17
Um es zu erklären: Sonst wird von dem nicht existenten Objekt in MyEditor1 die Methode Create aufgerufen. Da an der Adresse kein Zugriff möglich ist gibt es eine Schutzverletzung.

Die Deklaration von MyEditor1 hat aber nichts als globale Variable suchen. Das gehört in das Formular hinein...
Delphi-Quellcode:
TfrmYourForm = class(TForm)
...
private
  FMyEditor: TMPHexEditorEx;
public
end;
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#12

Re: HexEditor

  Alt 9. Mai 2010, 14:28
Ich hab mal schnell ein Beispiel mit einem dynamisch erzeugten Memo erstellt. Ich hoffe, das macht das Prinzip etwas klarer. Zur Designtime handelt es sich einfach nur um ein leeres Formular.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls{für TMemo};

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
    FDynamicMemo: TMemo;
    procedure OnMemoClick(Sender: TObject);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  //Erzeugen des Memos
  FDynamicMemo := TMemo.Create(nil);
  FDynamicMemo.Parent := self;
  //Setzen einiger Properties
  FDynamicMemo.Height := 80;
  FDynamicMemo.Align := alBottom;
  FDynamicMemo.Lines.Clear;
  FDynamicMemo.Lines.Add('Ich bin hier unten angewurzelt,');
  FDynamicMemo.Lines.Add('dass niemand aus dem Fenster purzelt.');
  //Zuweisung eines Event-Handlers
  FDynamicMemo.OnClick := OnMemoClick;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  //Freigeben des Memos
  FDynamicMemo.Free;
end;

procedure TForm1.OnMemoClick(Sender: TObject);
begin
  if Sender is TMemo then
    ShowMessage(TMemo(Sender).Lines.Text);
end;

end.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#13

Re: HexEditor

  Alt 9. Mai 2010, 14:35
Nagut, nagut
die Deklaration ist nun die Form verschoben:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Panel1: TPanel;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    MyEditor1: TMPHexEditorEx;
  public
...
Deweiteren heisst es im OnCreste der Form1 nun richtigerweise:

  MyEditor1 := TMPHexEditorEx.Create(Self); Aus dem mitgeliefertem Beispiel lese ich weiters, dass ein Assert folgt:

Delphi-Quellcode:
  procedure TForm1.FormCreate(Sender: TObject);
begin
  MyEditor1 := TMPHexEditorEx.Create(Self);
  Assert(MyEditor1 is TCustomGrid);
Soweit kein Fehler beim Compilieren, aber sobald ich versuche (wie im Beispiel) dem Editor eine Datei zu übergeben:
Delphi-Quellcode:
  procedure TForm1.FormCreate(Sender: TObject);
begin
  MyEditor1 := TMPHexEditorEx.Create(Self);
  Assert(MyEditor1 is TCustomGrid);

  MyEditor1.LoadFromFile('Test1.TXT'); // Exception!
fliegt mir das Projekt um die Ohren ('Test1.TXT' existiert):

  "EInvalidOperation: Element hat kein übergeordnetes Fenster" Eine Idee, was ich da noch falsch mache?

(Vielen Dank für die bisherigen, wertvollen Hinweise!)
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#14

Re: HexEditor

  Alt 9. Mai 2010, 14:36
Du musst noch den Parent zuweisen (siehe mein Beispiel).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#15

Re: HexEditor

  Alt 9. Mai 2010, 14:38
Haaalt!

Letzter Beitrag hat sich erledigt.

Aus dem Beispiel von Detlef:
"Du musst noch den Parent zuweisen (siehe mein Beispiel)."

Dann hat es tatsächlich gekplappt!!!


Suuper!
Vielen, vielen Dank!

Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: HexEditor

  Alt 9. Mai 2010, 14:49
Dass es so klappt, ist aber Zufall, denn du hast vergessen den Pfad mit dazuzuschreiben:
http://www.delphi-library.de/viewtopic.php?p=499701

Aber ich vermute einmal das war ohnehin nur für den Test so.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#17

Re: HexEditor

  Alt 9. Mai 2010, 14:51
Abschlußkommentar

Zunächst großes Dankeschön an alle Mitwirkenden! Ohne diese Hilfe hätte ich es nicht hinbekommen.

Hier noch mal eine vollständige Zusammenfassung wie man den HexEditor von Markus Stephany zum fliegen bekommt (auch unter TurboDelphi!):

Benötigt werden:
MPDELVER.INC
MPHexEditor.RES
MPHexEditor.PAS
MPHexEditorEx.PAS
und zusätzlich die GRIDS-Unit


Dann im Projekt:

Delphi-Quellcode:
unit U_Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MPHexEditor, MPHexEditorex, ExtCtrls, Grids;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    MyEditor1: TMPHexEditorEx;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

  MyEditor1 := TMPHexEditorEx.Create(Self);
  Assert(MyEditor1 is TCustomGrid);
  MyEditor1.Parent := self;
  MyEditor1.LoadFromFile('Test1.TXT');

end;

end.
Und schon klappts!
Vielleicht hilft es ja noch jemanden.

Also, schönen Sonntag noch weiters und vielen Dank.

Gruß
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:52 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