AGB  ·  Datenschutz  ·  Impressum  







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

Hilfe bei C++ Code nach Delphi Code

Ein Thema von pajofego · begonnen am 6. Okt 2004 · letzter Beitrag vom 7. Okt 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#11

Re: Hilfe bei C++ Code nach Delphi Code

  Alt 7. Okt 2004, 10:53
Zitat von pajofego:
Gut, also die Compiler Macros __FILE__ und __LINE__ gibt es wohl noch nicht in Delphi. Würde aber trotzdem ganz gerne etwas mehr über die JCL und Map-Files erfahren. Wo kann ich dazu etwas finden.
Im Anhang eine Unit die ich verwende um Exceptions abzufangen und aus der Fehleradresse die Unit+Zeile zu ermitteln. Ist aus einem Projekt... muß also ein bißchen aufgeräumt werden, sollte aber nicht das Problem sein.
Das läßt sich sicher auch irgendwie einsetzen um die aktuelle Unit+Zeile zu bekommen wenn man dem GetMapAddressFromAddress die richtige Adresse gibt


Zitat von pajofego:
Was ich noch unbedingt wissen müsste wären die Präprozessoranweisungen
Code:
#ifdef _DEBUG
...
#else
...
#endif
wie sieht denn sowas in Delphi aus?
Schau mal unter Compiler-Direktiven in der OH, da gibt es {$IF ...}, {$ENDIF}, ... Schalter.
Angehängte Dateien
Dateityp: pas catchex.pas (9,5 KB, 6x aufgerufen)
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#12

Re: Hilfe bei C++ Code nach Delphi Code

  Alt 7. Okt 2004, 10:57
Zitat von pajofego:
Zitat von dizzy:
*kreisch* Ist das Code oder Wirrwarr? Ich weiss schon warum ich C nicht wirklich mag...

(Sorry, konnt's mir net verkneifen.)
Sorry, ist ein bischen verwirrend, ist halt c(zääääh)++

Kurz gesagt soll es folgendes machen:

Im Debugmodus soll er mit in das Debugfenster eine Fehlermeldung reinschreiben, gleichzeitig hätte ich gerne die Zeilennummer und den Dateiname der Unit! Anschliessend folgt eine Meldung durch ein Dialogfeld. Übergabeparameter ist ein pointer! (Ist alles für DirectX-Anwendungen!)

Vielleicht wird meine Absicht jetzt etwas klarer.
Hm... wieso weist du einen Zeiger einem HRESULT zu?
  Mit Zitat antworten Zitat
pajofego

Registriert seit: 6. Okt 2004
103 Beiträge
 
#13

Re: Hilfe bei C++ Code nach Delphi Code

  Alt 7. Okt 2004, 11:05
Zitat von Oxmyx:
Zitat von pajofego:
Zitat von dizzy:
*kreisch* Ist das Code oder Wirrwarr? Ich weiss schon warum ich C nicht wirklich mag...

(Sorry, konnt's mir net verkneifen.)
Sorry, ist ein bischen verwirrend, ist halt c(zääääh)++

Kurz gesagt soll es folgendes machen:

Im Debugmodus soll er mit in das Debugfenster eine Fehlermeldung reinschreiben, gleichzeitig hätte ich gerne die Zeilennummer und den Dateiname der Unit! Anschliessend folgt eine Meldung durch ein Dialogfeld. Übergabeparameter ist ein pointer! (Ist alles für DirectX-Anwendungen!)

Vielleicht wird meine Absicht jetzt etwas klarer.
Hm... wieso weist du einen Zeiger einem HRESULT zu?
Das war Blödsinn von mir! Sorry! Ich war wohl schon fast im Reich der Träume, als ich das geschrieben habe! Aber erst einmal danke für den Code oben. So habe ich mir das auch ungefähr vorgestellt.

An allen anderen Danke ich auch! Werde mir mal jetzt die einzelnen Vorschläge anschauen und durcharbeiten.

P.S.: Habe mir gerade die Hilfe von JCL angeschaut und unter dem Punkt "Debugging->Source Locations" Gibt es functions __FILE__ und __LINE__ ! Da müsste doch was gehen oder?
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#14

Re: Hilfe bei C++ Code nach Delphi Code

  Alt 7. Okt 2004, 11:32
Ach ja,

Assertions kennen auch File und Zeilennummer des Problems, Beispiele für die Verwendung:

OH
AssertErrorProc
und
AssertErrorProc (Beispiel)

inclusive der Möglichkeit die auf eigene Ausgaberoutinen umzusetzen,

siehe obiges Beispiel und

Code:
procedure AssertErrorHandler(const Message, Filename: string; LineNumber: Integer; ErrorAddr: Pointer);
var
  S: String;
begin
  S := Format('%s (%s, line %d, address $%x)',
    [Message, Filename, LineNumber, Pred(Integer(ErrorAddr))]);
  writeln(myFile,s);
end;
Ergo: mit den entsprechenden Debuginformationen compiliert kennt die Anwendung Filename und Zeilennummer und man kommt auch recht einfach heran.

Grüsse
Woki
  Mit Zitat antworten Zitat
pajofego

Registriert seit: 6. Okt 2004
103 Beiträge
 
#15

Re: Hilfe bei C++ Code nach Delphi Code

  Alt 7. Okt 2004, 13:11
So jetzt habe ich es so, wie ich mir das in etwa vorgestellt habe. Danke nochmal an alle! Echst super Hilfe hier! Das einzige was mir bei Delphi noch nicht klar ist, ist die Sache mit der Debug und Release Version, die es unter VC gibt. Delphi erstellt nur eine Exe Datei und die ist abhängig von den gewählten Compileroptionen z.B.: {$D+} und etc. Ist das richtig? Bedeutet dann, in Delphi {$D+} = _DEBUG wie unter VC?

Danke nochmals.


Delphi-Quellcode:
{$IFDEF _DEBUG}
function CHECK_HR(p: HRESULT): HRESULT;
var
  acError: array[0..255] of Char;
begin
  if FAILED(p) then begin
    ZeroMemory(@acError, sizeof(Char) * 256);
    strlfmt(acError, sizeof(Char) * 256, 'DEBUG: HRESULT FAILED %d in file %s in line %d ', [p, __FILE__, __LINE__]);
    MessageBox(0, acError, 'HRESULT FAILED', MB_OK or MB_ICONERROR);
  end;
  Result := p;
end;
{$ELSE}
function CHECK_HR(p: HRESULT): HRESULT;
begin
  Result := p;
end;
{$ENDIF}
  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 22:04 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