Autor Beitrag
Umgssda
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 07.09.04 07:51 
Ich habe gelesen, dass man Fehlermeldungen per FormatMessage und GetLastError von der API anstatt von Delphi selbst mit einem Text versehen lassen kann. Jetzt habe ich aber noch das Problem, dass ich nicht weiss, wo ich diese Aufrufe anbringen soll, um alle Fehlermeldungen, die generiert werden koennten zu ersetzen.

Hat da jemand eine Idee?
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 07.09.04 10:18 
Das geht eigentlich ganz einfach wenn man sich mal anschaut wie SysErrorMessage aus der Unit SysUtils.pas das macht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function SysErrorMessage(ErrorCode: Integer): string;
var
  Len: Integer;
  Buffer: array[0..255of Char;
begin
  Len := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or
    FORMAT_MESSAGE_ARGUMENT_ARRAY, nil, ErrorCode, 0, Buffer,
    SizeOf(Buffer), nil);
  while (Len > 0and (Buffer[Len - 1in [#0..#32'.']) do Dec(Len);
  SetString(Result, Buffer, Len);
end;

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Umgssda Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 07.09.04 13:20 
Motzi hat folgendes geschrieben:
Das geht eigentlich ganz einfach wenn man sich mal anschaut wie SysErrorMessage aus der Unit SysUtils.pas das macht:

Ich hatte eigentlich gehofft, es ginge auch anders, als direkt die System Units zu editieren.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 07.09.04 13:28 
Brauchst du ja nicht..!

Aber hier siehst du wie die Borländer das gemacht haben und kannst es bei Bedarf einfach übernehmen..!

Oder hab ich deine Frage falsch verstanden..? :?

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Umgssda Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 07.09.04 22:42 
Motzi hat folgendes geschrieben:

Oder hab ich deine Frage falsch verstanden..? :?

Die Frage war "wo?". Ich kann deinem Beispiel zwar entnehmen, wie ich eine Fehlermeldung umstelle, aber ich will ja nicht nur eine, sondern gleich alle. Nur weiss ich eben nicht, wo ich die alle auf einmal abfangen kann, jetzt mal abgesehen von den System-Units.
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Mi 08.09.04 00:02 
Umgssda hat folgendes geschrieben:
Nur weiss ich eben nicht, wo ich die alle auf einmal abfangen kann

Du willst Application-Wide Exceptionen abfangen die nicht mit try behandelt worden sind?
Schau dir mal das Ereignis OnExceptionan von TApplication an.
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

{--------------------------------------------------------------------------------------------------}

procedure TForm1.AppWideException(Sender: TObject; E: Exception);
begin

  Application.ShowException(E);

end;

{--------------------------------------------------------------------------------------------------}

procedure TForm1.FormCreate(Sender: TObject);
var
  S: String;
  I: Integer;
begin

  Application.OnException := AppWideException;

  S := 'Jetzt kommt ein Fehler.';
  I := StrToInt(S);

end;

{--------------------------------------------------------------------------------------------------}

end.

_________________
Ciao, Sprint.
Umgssda Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 08.09.04 05:07 
Sprint hat folgendes geschrieben:

Du willst Application-Wide Exceptionen abfangen die nicht mit try behandelt worden sind?
Schau dir mal das Ereignis OnExceptionan von TApplication an.


Danke, das hilft wirklich weiter.