Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi results loggen (https://www.delphipraxis.net/205082-results-loggen.html)

venice2 29. Jul 2020 20:25

results loggen
 
Hat vielleicht jemand eine Logger unit mit der ich Resultate in eine Datei schreiben kann?
Falls nicht muss ich selbst was schreiben.

Delphi-Quellcode:
procedure Log(Text:string);
var
  F : TextFile;
  FileName : String;
  dt:string;
begin
  FileName := ExtractFilePath(ParamStr(0)) + 'Log.txt';
  AssignFile(F, FileName);
  if FileExists(FileName) then
    Append(F)
  else
    Rewrite(F);
    dt:=DateToStr(Date);
    dt:=dt+' / '+TimeToStr(Time);
  WriteLn(F, dt, ' : ', text);
  CloseFile(F);
end;
Das ist mir etwas zu einfach. (vielleicht mit mehr Möglichkeiten)
Vielleicht hat ja jemand etwas besseres (keine Komponente) und D2010

himitsu 29. Jul 2020 20:45

AW: results loggen
 
Bei Google suchenDUnitX enthält eine Logger-Klasse, auch Indy liefert was mit (IdLog) und dann findest du im GetIt auch noch mit Bei Google suchenCodeSite Express eine Logging-Suite.

Und dann findet man noch viele andere Komponenten, auf diversen Plattformen, wie z.B. Bei Google suchenLog4Delphi.

TurboMagic 29. Jul 2020 21:57

AW: results loggen
 
Wenn CodeSite nicht nach Geschmack sein sollte, dann gäbe es unter Windows noch OutputDebugString,
die Texte kann man z.B. auch mit der IDE in der Ereignisanzeige sehen.

Und nutzt man FMX gibt's noch d.log, welches cross platform fähig ist. Unter Windows nutzt die
wohl OutputDebugString unter Android kann man die Meldungen mit Monitor.bat aus dem SDK anzeigen
lassen.

venice2 30. Jul 2020 03:24

AW: results loggen
 
Zitat:

Und dann findet man noch viele andere Komponente
Ich hatte betont das ich keine der vielen Komponenten verwenden möchte :)
Zitat:

Vielleicht hat ja jemand etwas besseres (keine Komponente) und D2010
Kein FMX Delphi 2010

DUnitX ist nicht für D2010 geeignet.
CodeSite Express 399 Dollar für ein Freeware Projekt?
Log4Delphi = Komponente.

Ok. Werde mich mal selber umsehen dachte jemand hatte etwas hier.
Über Google kann ich selber suchen da muss sich hier niemand drum bemühen.

Lemmy 30. Jul 2020 05:11

AW: results loggen
 
schau dir mal Mormot an
https://github.com/synopse/mORMot

das sollte auch in D2010 laufen, da gibt es SynLog, den ganzen anderen Rest musst Du nicht nutzen...

Jasocul 30. Jul 2020 06:29

AW: results loggen
 
Zitat:

Zitat von venice2 (Beitrag 1470758)
Das ist mir etwas zu einfach. (vielleicht mit mehr Möglichkeiten)

Welche Möglichkeiten brauchst du denn?

KodeZwerg 30. Jul 2020 07:23

AW: results loggen
 
Wie wäre es total oldschool, so in etwa:
Delphi-Quellcode:
procedure LogResult(const Text: string; const LogFile: string);
var
  myFile : TextFile;
begin
  AssignFile(myFile, FileName);
  if not FileExists(FileName) then
    ReWrite(myFile);
  Append(myFile);
  WriteLn(myFile, Text);
  CloseFile(myFile);
end;
Ps: Nur hier im Editor "entwickelt" ohne zu testen. Aber was ich damit meine/mache sollte hoffentlich klar sein.

//edit
Ups, jetzt erst gesehen das Du da Code rangepappt hattest, ich hatte Browser über Nacht offen...

Moombas 30. Jul 2020 07:47

AW: results loggen
 
@venice2: Definiere generell mal deine Anforderung "mehr Möglichkeiten" und was du dir darunter vorstellst. Generell macht ja dein Code und der von Codezwerg das was du willst, das Result in einer Datei loggen.

Ich vermute mal du willst zusätzlich noch so etwas mit loggen, wie z.B.:
  1. Welche Funktion hat das Logging aufgerufen?
  2. Welche Variablen wurden übergeben?
  3. ...
Jedoch solltest du das dann exakt definieren, dann kann dir sicherlich auch geholfen werden.

Je nach dem empfiehlt es sich auch im CSV-Format zu loggen (z.B.: Datum/Zeit;Funktionsname;Variablen;Result), dann kannst du das Log später (falls gewünscht) schöner in Excel auswerten.

venice2 30. Jul 2020 10:42

AW: results loggen
 
Zitat:

Definiere generell mal deine Anforderung "mehr Möglichkeiten"
Hätte vielleicht fragen sollen was ist so am gebräuchlichsten um Anwendern mitzuteilen was gerade welche
Funktion aufgerufen und welches Ergebnis erzielt wurde.
Vielleicht ist dann doch mein kleines Schnipsel ausreichend.

Wollte keine Unruhe hier einbringen.

Zitat:

schau dir mal Mormot an
Habe ich.
Es sind Abhängigkeiten zu anderen Units nötig.
Man kann nicht einfach nur SynLog.pas verwenden.
Danke für den Tip.

Eventuell reicht einfach schon OutputDebugString wie TurboMagic schon sagte.

Jasocul 30. Jul 2020 10:58

AW: results loggen
 
Ich glaube nicht, dass wegen deiner Frage hier Unruhe aufkommt. :wink:

Das Fehlerprotokoll ist ja üblicherweise nicht für den Anwender gedacht. Daher auch die Frage, welche Möglichkeiten DU haben möchtest.

Ich trage in meine Protokolle üblicherweise bei Excpetions auch den Text der Exception mit ein. Bei kontrollierten Fehlern ist natürlich eigener Text drin. Ich arbeite da gerne mit strukturierten Fehlernummer und kurzen Klartexten, falls das doch mal telefonisch übermittelt werden muss. Über die Fehlernummer weiß ich dann, an welcher Stelle das Problem aufgetreten ist. Man kann natürlich Unit, Prozedur, Funktion, etc. ausgeben. Alles Geschmackssache, aber für den Anwender eher verwirrend (ist zumindest meine Erfahrung).
Ein Zeitstempel ist natürlich selbstverständlich. Aber den hast du ja schon berücksichtigt.

Wenn Anwender die Protokolle auswerten können sollen, muss das ausführlicher und für Anwender verständlich geschrieben sein.

mjustin 30. Jul 2020 12:50

AW: results loggen
 
Ich werfe mal meine Logging Fassade https://github.com/michaelJustin/slf4p in den Ring :)

venice2 30. Jul 2020 12:56

AW: results loggen
 
Zitat:

Zitat von mjustin (Beitrag 1470807)
Ich werfe mal meine Logging Fassade https://github.com/michaelJustin/slf4p in den Ring :)

Leider werden diese Units nicht gefunden.
Log4D,
TestFramework,
GUITestRunner,
TextTestRunner,

mjustin 30. Jul 2020 13:02

AW: results loggen
 
Zitat:

Zitat von venice2 (Beitrag 1470809)
Zitat:

Zitat von mjustin (Beitrag 1470807)
Ich werfe mal meine Logging Fassade https://github.com/michaelJustin/slf4p in den Ring :)

Leider werden diese Units nicht gefunden.
Log4D,
TestFramework,
GUITestRunner,
TextTestRunner,

Die braucht nur der Unittest, die mitgelieferten Loggingklassen tun's auch.

venice2 30. Jul 2020 13:04

AW: results loggen
 
Zitat:

Zitat von mjustin (Beitrag 1470811)
Zitat:

Zitat von venice2 (Beitrag 1470809)
Zitat:

Zitat von mjustin (Beitrag 1470807)
Ich werfe mal meine Logging Fassade https://github.com/michaelJustin/slf4p in den Ring :)

Leider werden diese Units nicht gefunden.
Log4D,
TestFramework,
GUITestRunner,
TextTestRunner,

Die braucht nur der Unittest, die mitgelieferten Loggingklassen tun's auch.

Ok ;)
Werde es mal mit einem eigenen Example testen.
Ist ja nur das eine enthalten.

Danke.

mjustin 30. Jul 2020 13:18

AW: results loggen
 
Danke für das Feedback, ich ergänze das Wiki um ein Beispiel ohne Abhängigkeiten. Das hier sollte gehen:

Delphi-Quellcode:
program HelloWorld;

uses
  djLogOverSimpleLogger, djLogAPI, djLoggerFactory;

var
  Logger: ILogger;

begin
  Logger := TdjLoggerFactory.GetLogger('demo');
  Logger.Info('Hello World');

  WriteLn('hit any key');
  ReadLn;
end.

venice2 30. Jul 2020 13:19

AW: results loggen
 
Zitat:

Zitat von mjustin (Beitrag 1470814)
Danke für das Feedback, ich ergänze das Wiki um ein Beispiel ohne Abhängigkeiten. Das hier sollte gehen:

Delphi-Quellcode:
program HelloWorld;

uses
  djLogOverSimpleLogger, djLogAPI, djLoggerFactory;

var
  Logger: ILogger;

begin
  Logger := TdjLoggerFactory.GetLogger('demo');
  Logger.Info('Hello World');

  WriteLn('hit any key');
  ReadLn;
end.

Wäre super wenn du das machen könntest und die zeit dafür findest.
Mit Exeption und den anderen Kram so wie er in deinem aktuellen Example vorhanden ist.
Wenn möglich ohne fremd Units (Abhängigkeiten) :)

TurboMagic 30. Jul 2020 16:31

AW: results loggen
 
Zitat:

Zitat von venice2 (Beitrag 1470768)
Kein FMX Delphi 2010

CodeSite Express 399 Dollar für ein Freeware Projekt?

Ok, CodeSite Lite war bei D2010 noch nicht dabei. Kam glaube ich erst ab XE mit.

himitsu 30. Jul 2020 16:47

AW: results loggen
 
Zitat:

hit any key -> ReadLn
Das klingt wie unser Drucker.
Wenn der sagt "dürcke irgendwas", dann muß man OK drücken (alles andere geht nicht)
und wenn er sagt "drücke OK", dann kann man alles andere drücken (außer OK, was da nicht geht).

Zitat:

Kam glaube ich erst ab XE mit
Schade, dachte das war bissl früher.

philipp.hofmann 31. Jul 2020 09:01

AW: results loggen
 
TMSLogger ist kostenlos und bietet sehr vielfältige Möglichkeiten und ist CrossPlatform tauglich.

TSchnuckenbock 31. Jul 2020 11:34

AW: results loggen
 
Kostenlos ?

Also das folgende "TMS Logging"

https://www.tmssoftware.com/site/tmslogging.asp

kostet scheinbar.

philipp.hofmann 31. Jul 2020 12:04

AW: results loggen
 
Ok, sorry. Ich dachte es wäre auf der folgenden Liste gewesen: https://www.tmssoftware.com/site/freetools.asp
War vielleicht auch mal so. Ich habe eh einige TMS-Komponenten, da diese viel Arbeitsaufwand ersparen und einen wirklich guten Support beeinhalten.

venice2 31. Jul 2020 12:33

AW: results loggen
 
Zitat:

Zitat von philipp.hofmann (Beitrag 1470932)
Ok, sorry. Ich dachte es wäre auf der folgenden Liste gewesen: https://www.tmssoftware.com/site/freetools.asp
War vielleicht auch mal so. Ich habe eh einige TMS-Komponenten, da diese viel Arbeitsaufwand ersparen und einen wirklich guten Support beeinhalten.

Danke aber wie ich schon sagte keine Komponente.
Ich warte auf ein Example vom @mjustin ;) bis es zur Verfügung steht.

philipp.hofmann 31. Jul 2020 12:54

AW: results loggen
 
Vielleicht eine naive Frage, aber was macht an der Stelle für dich eine Komponente aus. TMSLogging ist an der Stelle ja kein zwingender Bestandteil deiner App-UI.
Ich habe dazu nur die core-.pas-Files eingebunden und dann musst du dich nur entscheiden, ob du die FMX-TMSLogger oder VCL-TMSLogger-Variante als .pas-File einbindest.
In meinen Formularen findest du dazu nichts.

KodeZwerg 31. Jul 2020 12:57

AW: results loggen
 
//OT

Zitat:

Zitat von venice2 (Beitrag 1470934)
Ich warte auf ein Example vom @mjustin ;) bis es zur Verfügung steht.

Selbst ist der Mann/die Frau.
Schau doch mal letzte Aktualisierung an, 5 Jahre her, da du dich zurzeit damit beschäftigst, hilf ihm doch ein wenig und bastel eine Demo. *nur so ein Gedanke*
Eine Vorlage dazu steht ja hier von ihm bereits zur Verfügung und ich trau es Dir zu.

mjustin 31. Jul 2020 14:08

AW: results loggen
 
Zitat:

Zitat von venice2 (Beitrag 1470934)
Ich warte auf ein Example vom @mjustin ;) bis es zur Verfügung steht.

Ich sehe gerade, dass mein letzter Post nicht angekommen ist ... Ein Beispiel, das ohne Log4D auskommt und stattdessen SimpleLogger verwendet, hatte ich gestern gepostet (Beitrag #16).

Mit Log4D ist es natürlich noch komfortabler, da es damit möglich ist in eine Datei zu loggen (und vieles mehr).

venice2 31. Jul 2020 19:33

AW: results loggen
 
Zitat:

Zitat von KodeZwerg (Beitrag 1470938)
//OT

Zitat:

Zitat von venice2 (Beitrag 1470934)
Ich warte auf ein Example vom @mjustin ;) bis es zur Verfügung steht.

Selbst ist der Mann/die Frau.
Schau doch mal letzte Aktualisierung an, 5 Jahre her, da du dich zurzeit damit beschäftigst, hilf ihm doch ein wenig und bastel eine Demo. *nur so ein Gedanke*
Eine Vorlage dazu steht ja hier von ihm bereits zur Verfügung und ich trau es Dir zu.

Unnötiges Kommentar. Du sagst ja selbst OT! Warum dann posten?
Aber gut es ist zu mühsam das Thema fortzuführen da bin ich schneller wenn ich doch alles selber mache dann weis ich was ich hab.
Zitat:

Ich sehe gerade, dass mein letzter Post nicht angekommen ist
Ist es aber du sagtest du würdest für die Wiki ein Beispiel erstellen.
Wenn nicht dann ist es so.

Zitat:

Vielleicht eine naive Frage, aber was macht an der Stelle für dich eine Komponente aus
Die ich installieren muss?
Habe noch keine Komponente gesehen die man nicht installiert das andere sind halt nur *.pas Dateien.

himitsu 31. Jul 2020 19:48

AW: results loggen
 
Installieren muß man nur Komponenten, welche eine DesignTime-Funktion besitzen und welche man z.B. im FormDesigner auf die Form pappen möchte.
Alles andere braucht man nicht zu installieren.

venice2 31. Jul 2020 19:51

AW: results loggen
 
Zitat:

Installieren muß man nur Komponenten, welche eine DesignTime-Funktion besitzen
Dann ist es für mich keine Komponente (Installieren und oder Registrieren) sondern eine Ansammlung von Units.
Am ende kann das jeder für sich auslegen.

Delphi.Narium 1. Aug 2020 14:31

AW: results loggen
 
Nein, ist keine Auslegungssache:

Von TComponent abgeleitet ist eine Komponente, kann man installieren, muss man aber nicht.

Wann das Installieren ein Muss ist, wurde weiter oben beschrieben.

Ansonsten hilft bei 'ner nicht installierten Komponente im Quelltext an geeigneter Stelle ein
Delphi-Quellcode:
variabelnname := TKomponentenname.Create(nil);
und wenns nicht mehr gebraucht wird ein
Delphi-Quellcode:
variabelnname.free;
Funktioniert letztlich nicht anders, als z. B. eine TStringList.

Brauchst irgendwo ein Create und musst irgendwo ein Free einbauen.

Aber ein Komponente = muss installiert werden, ist einfach nur falsch.

Du kannst auch alle visuellen Komponenten deinstallieren und zur Laufzeit trotzdem nutzen. Musst sie an geeigneter Stelle per Create erstellen, die Position festlegen, ggfls. Inhalt zuweisen ... und an passender Stelle wieder freigeben.

Nutze auf diese Weise etliche nichtinstallierte Komponenten, klappt seit vielen Jahren absolut problemlos.

Du könntest also problemlos eine der beschriebenen Loggingkomponenten ohne Installation, nur durch einbinden der passenden Unit z. B. im FormCreate erstellen und im FormDestroy freigeben.

Sind da bloß eine Zeile im Uses, eine Zeile für die passende Variabel, z. B. private-Abschnitt des Formulars, eine Zeile für's Create eine für's Free: Schwupps: Und schon kannst Du die nichtinstallierte Komponenten im ganzen Formular nutzen.

Geht natürlich genauso einfach in 'nem Dienst, 'nem Konsolenprogramm ...

philipp.hofmann 2. Aug 2020 11:21

AW: results loggen
 
Yepp, das würde ich so unterschreiben. Es gibt sogar viele Fremdhersteller-Komponenten, welche sich gar nicht so einfach installieren lassen bzw. nur mit genau einer Delphi-Version (meist die neuste) und für alle anderen Delphi-Versionen müsste man selber Hand anlegen. Ich binde auch viele Fremdhersteller-Komponenten nur per Hand ein, wie von Delphi.Narium beschrieben. Dann kann man auch ganz einfach zwischen unterschiedlichen Versionen dieser "Komponenten" wechseln. Wichtig ist dann nur, dass einem klar sein muss, ob man manuell etwas mit "deployen" muss, damit die "Komponente" läuft. Aber ist off-topic, ich wollte nur die Abneigung des Thread-Erstellers gegen Komponenten verstehen.

venice2 18. Aug 2020 05:31

AW: results loggen
 
Nun gut wie auch immer.
Wer es testen will.

Delphi-Quellcode:
unit Dynamic_Trace;

interface

uses Windows, Messages;

const
  dllfile = 'Tracer.dll';

var
  TRACE_Handle: Thandle = 0;
  Trace_Loaded: Bool = false;

  Trace: function(Msg: PWideChar): LongInt; stdcall;

function Load_TRACEDLL(const dllfilename: string): BOOL;
function GetTraceWinHandle: BOOL;
procedure Unload_TRACEDLL;

implementation

function Load_TRACEDLL(const dllfilename: string): BOOL;
var
  oldmode: integer;
begin
  if TRACE_Handle <> 0 then
    Result := true
  else
  begin
    oldmode := SetErrorMode($8001);
    TRACE_Handle := LoadLibrary(PWideChar(dllfilename));
    SetErrorMode(oldmode);
    if TRACE_Handle <> 0 then
    begin
      @Trace := GetProcAddress(TRACE_Handle, PAnsiChar('Trace'));
      if (@Trace = nil) then
      begin
        FreeLibrary(TRACE_Handle);
        TRACE_Handle := 0;
      end;
    end;
    Result := (TRACE_Handle <> 0);
  end;

end;

function GetTraceWinHandle: BOOL;
var
  HWND: DWord;
begin

  HWND := FindWindow('TRACER', 'TRACER');
  Result := HWND <> 0;
end;

procedure Unload_TRACEDLL;
var
  HWND: DWord;
begin
  if TRACE_Handle <> 0 then
  begin
    HWND := FindWindow('TRACER', 'TRACER');
    if HWND <> 0 then
    begin
      TRACE_Handle := SendMessage(HWND, WM_DESTROY, 0, 0);
      Trace_Loaded := false;
    end else
    begin
      TRACE_Handle := 0;
      Trace_Loaded := false;
    end;
  end;
end;

end.
Aufruf Beispiel was von der DLL und oder Exe je nachdem wo man die DLL verwendet zurückgegeben wird.

Delphi-Quellcode:
  if Trace_Loaded then
  begin
    if GetTraceWinHandle then // prüfen falls das Window beendet wurde.
    begin
      Trace(PWideChar('BASSVIS_Init - Alias(SONIQUEVIS_Init) ' + ' Container Handle = ' +
        IntToStr(VisContainerHandle) + ' Result = ' + IIF(Result, 'TRUE', 'FALSE')));
      Trace('------------------------- ');
    end;
  end;
Rechtsklick auf das Window öffnet ein PopupMenu wo man angeben kann ob man die Debugausgabe speichern will oder nicht.
Im Archiv ist eine Debug.txt Datei enthalten kann man sich anschauen oder auch nicht, wie die Resultate ausgeben werden.

Wenn man das Fenster nicht mehr sehen möchte einfach die DLL umbenennen. (Tracer.dll zu Tracer.dl) dann muss man nicht den Quelltext ändern.
Wenn diese nicht gefunden wird Arbeitet sie logischerweise auch nicht.
Deshalb Dynamisch geladen.

Die unit Dynamic_Trace; muss in jedem Projekt eingebunden werden.

KodeZwerg 18. Aug 2020 10:03

AW: results loggen
 
Beim anschauen Deines Quelltext ist mir aufgefallen das
Delphi-Quellcode:
Trace_Loaded
nirgends auf
Delphi-Quellcode:
True
gesetzt wird, somit ist Dein Beispiel Code nicht ausführbar.

venice2 18. Aug 2020 10:14

AW: results loggen
 
Zitat:

Zitat von KodeZwerg (Beitrag 1471986)
Beim anschauen Deines Quelltext ist mir aufgefallen das
Delphi-Quellcode:
Trace_Loaded
nirgends auf
Delphi-Quellcode:
True
gesetzt wird, somit ist Dein Beispiel Code nicht ausführbar.

Schaue dir das Bitmap an dann kannst du sehen das es ausführbar ist.

Das!
Delphi-Quellcode:
Result := (TRACE_Handle <> 0);


ist nicht True? Sollte mich wundern.
Es sei denn das Handle wird nicht gefunden. Sollte mich aber ebenfalls wundern.
Schaue bitte nochmal etwas genauer hin.

KodeZwerg 18. Aug 2020 10:20

AW: results loggen
 
Delphi-Quellcode:
if Trace_Loaded then
wird immer scheitern da
Delphi-Quellcode:
Trace_Loaded
immer
Delphi-Quellcode:
False
ist.
Das meinte ich damit und ich glaube Dir das es das macht was Du möchtest ohne es selbst auszuprobieren.

venice2 18. Aug 2020 10:28

AW: results loggen
 
Zitat:

Zitat von KodeZwerg (Beitrag 1471990)
Delphi-Quellcode:
if Trace_Loaded then
wird immer scheitern da
Delphi-Quellcode:
Trace_Loaded
immer
Delphi-Quellcode:
False
ist.
Das meinte ich damit und ich glaube Dir das es das macht was Du möchtest ohne es selbst auszuprobieren.

Manchen Menschen kann man nur mit Bildern etwas veranschaulichen.
Bitte sehr!

Es kann doch nicht so schwer zu erkennen sein das diese Abfrage "True" ergibt wenn das Handle gefunden wurde. bzw. <> 0

Delphi-Quellcode:
Result := (TRACE_Handle <> 0);

KodeZwerg 18. Aug 2020 10:37

AW: results loggen
 
Ja ne, iss klar. Wir reden aneinander vorbei, ich wollte Dich lediglich auf das offensichtliche Aufmerksam machen aber bin gescheitert und belasse es dabei.

Du redest von
Delphi-Quellcode:
function Load_TRACEDLL(const dllfilename: string): BOOL;
und ich von
Delphi-Quellcode:
Trace_Loaded
.
Wenn diese Methode das
Delphi-Quellcode:
Trace_Loaded
setzen würde wäre es nie zu dieser Diskussion gekommen.

Verzeihung und Danke für alles.

venice2 18. Aug 2020 10:40

AW: results loggen
 
Zitat:

Zitat von KodeZwerg (Beitrag 1471992)
Ja ne, iss klar. Wir reden aneinander vorbei, ich wollte Dich lediglich auf das offensichtliche Aufmerksam machen aber bin gescheitert und belasse es dabei.

Du redest von
Delphi-Quellcode:
function Load_TRACEDLL(const dllfilename: string): BOOL;
und ich von
Delphi-Quellcode:
Trace_Loaded
.
Wenn diese Methode das
Delphi-Quellcode:
Trace_Loaded
setzen würde wäre es nie zu dieser Diskussion gekommen.

Verzeihung und Danke für alles.

Sie setzt es und ist auch logisch!

Nun ja eigentlich sollte das klar und ersichtlich sein aber gut ich kann es gerne nochmal ausführlicher machen.
Was ist die Rückgabe von Load_TRACEDLL ? Richtig.. BOOL.
Also ist es doch logisch das ich damit mein Trace_Loaded verknüpfe oder?

Delphi-Quellcode:
Trace_Loaded := Load_TRACEDLL(ExtractFilePath(paramstr(0)) + dllfile);

Deshalb sagte ich es ist True.. abhängig davon ob die Funktion ein True zurück gibt.

Delphi-Quellcode:
function BASSVIS_Init(Kind: TBASSVIS_KIND_T; MainHandle: HWND; UseDebug: BOOL = false): BOOL; stdcall;
var
  HWND: DWord;
begin
  Result := False;

  if UseDebug then
  begin
    if not Trace_Loaded then
    begin
      Trace_Loaded := Load_TRACEDLL(ExtractFilePath(paramstr(0)) + dllfile);
      if Trace_Loaded then
      begin
        Trace('');
        repeat
          HWND := FindWindow('TRACER', 'TRACER'); // warten bis das Fenster erstellt wurde
          WinprocessMessages;
        until HWND <> 0;
      end;
    end;
  end else
  if Trace_Loaded then
    Unload_TRACEDLL;
  // ....
end;

venice2 18. Aug 2020 11:27

AW: results loggen
 
ganz einfaches sample.

Debug.txt.

Zitat:

Hello World
TForm2 -> btnClick was clicked
-----------------------------
Goodby World
Please Wait 5 Second
Vorausgesetzt es wurde im PopupMenu aktiviert.
Ansonsten wird es nur im Window ausgegeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 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