AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

results loggen

Ein Thema von venice2 · begonnen am 29. Jul 2020 · letzter Beitrag vom 18. Aug 2020
Antwort Antwort
venice2
(Gast)

n/a Beiträge
 
#1

AW: results loggen

  Alt 31. Jul 2020, 19:33
//OT

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.

Geändert von venice2 (31. Jul 2020 um 19:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.348 Beiträge
 
Delphi 12 Athens
 
#2

AW: results loggen

  Alt 31. Jul 2020, 19:48
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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#3

AW: results loggen

  Alt 31. Jul 2020, 19:51
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.

Geändert von venice2 (31. Jul 2020 um 21:26 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#4

AW: results loggen

  Alt 1. Aug 2020, 14:31
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 variabelnname := TKomponentenname.Create(nil); und wenns nicht mehr gebraucht wird ein 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 ...
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
923 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: results loggen

  Alt 2. Aug 2020, 11:21
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.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#6

AW: results loggen

  Alt 18. Aug 2020, 05:31
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.

Geändert von venice2 (19. Aug 2020 um 00:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: results loggen

  Alt 18. Aug 2020, 10:03
Beim anschauen Deines Quelltext ist mir aufgefallen das Trace_Loaded nirgends auf True gesetzt wird, somit ist Dein Beispiel Code nicht ausführbar.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz