AGB  ·  Datenschutz  ·  Impressum  







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

Debug Console oder ähnlich

Ein Thema von EWeiss · begonnen am 22. Okt 2010 · letzter Beitrag vom 24. Okt 2010
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Debug Console oder ähnlich

  Alt 22. Okt 2010, 23:26
Falls ich Dich richtig verstanden habe brauchst Du keine Kompilerschalter sondern Parametrisierte Aufrufe die dann verschieden verzweigen?
In meiner Anwendung wird geprüft ob diese Unit hier TRACEMODE = 1 als Parameter für die bedingte compilierung übergibt
Wird dieser nicht gefunden wird auch nichts ins Logbuch eingetragen
So schützt sich diese selbst vor unnötigen zugriffen von außen.

Ich habe in meiner DLL unter Parameter "TRACEMODE = 1" eingegeben eigentlich sollte der Compiler das erkennen
während der laufzeit und darauf hin entscheiden ob er den Codeteil freigibt also verwendet oder nicht.
Vorrausgesetzt die Anwendung läuft dann werden die Daten in das Fenster geschickt und dort ausgewertet.

in vb sieht mein compiler schalter so aus!
#If TRACEMODE = 1 Then
#Else
#End If

und steht genau an der gleichen stelle wie hier im Code übergeben.
Wie gesagt habe mich mit den Schaltern in Delphi noch nicht beschäftigt.

Nochmal ein ganz kleines Beispiel!
Zitat:
Der #If...Then...#Else-Block kann benutzt werden, um ein Symbol zu testen und entsprechende Anweisung einzukompilieren oder aus dem Kompilat herauszuhalten.
Daneben kann es auch zum Auskommentieren großer Quelltext-Passagen verwendet werden.
Code:
Option Explicit

#Const MitHinein = True

Public Sub Main
    Debug.Print "Dieser Text ist immer zu sehen"

    #If MitHinein Then
         Debug.Print "Dieser Text ist nur zu sehen, wenn " & _
                     "'MitHinein' entsprechend gesetzt wurde."
    #End If

    #If False Then
         Debug.Print "Dieser Text ist nie zu sehen."
    #End If

    Debug.Print "Das war es schon."
End Sub
So ist es veranschaulicht was bzw.. wofür die Schalter stehen.

Ist der Schalter unter Parameter im Debugger Dialog gesetzt muss der ganze obere Teil des Quelltextes aktiv sein
Andernfalls werden die beiden unteren proceduren verwendet die dann nichts tun...

gruss Emil

Geändert von EWeiss (22. Okt 2010 um 23:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Debug Console oder ähnlich

  Alt 22. Okt 2010, 23:54
Delphi ist keine Interpretersprache.
Das was Du mit Deinen Kompilerschaltern setzt wirkt sich direkt auf das Kompilat aus.

Ich denke du brauchst Parameter, ohne Kompilerschalter, falls ich einen Hänger habe korrigiert mich.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Debug Console oder ähnlich

  Alt 22. Okt 2010, 23:59
Delphi ist keine Interpretersprache.
Das was Du mit Deinen Kompilerschaltern setzt wirkt sich direkt auf das Kompilat aus.

Ich denke du brauchst Parameter, ohne Kompilerschalter, falls ich einen Hänger habe korrigiert mich.
Ich will dir da nicht widersprechen..
Wie würde das aussehen das wie beschrieben nur der Obereteil ausgeführt wird wenn der parameter
gesetzt ist und der untere ignoriert wird.

Und umgekehrt natürlich wenn er nicht gesetzt ist.

Ich war der meinung das man das mit Compiler Schaltern unter Delphi regeln könnte.
Irren ist Menschlich

gruss Emil
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Debug Console oder ähnlich

  Alt 23. Okt 2010, 18:22
Soweit läuft es jetzt.
Mein Window wird gefunden ..

Jetzt habe ich ein VBArray in Delphi erstellt
Und ist erweiterbar jenachdem wieviele Parameter ich übergeben will.

Dieses wird folgendermaßen initialisiert.
Delphi-Quellcode:
  VBArray := VarArrayCreate([0, 2], varVariant);
  VBArray[0] := 'BASSVIS_Init '; VBArray[1] := GlobalVisInit; VBArray[2] := MainHandle;
  Trace(VBArray);
Nach dem absenden der Message bekomme ich hier eine negativmeldung
Zitat:
[DCC Fehler] uTracer.pas(46): E2008 Inkompatible Typen
for i := low(args) to high(args) do Obwohl die definition von arg eigentlich richtig sein sollte!
procedure SendTraceMessage(args: OleVariant); bei der zweiten Schleife ist es in Ordnung..
Delphi-Quellcode:
         for j := VarArrayLowBound(args, i) to VarArrayHighBound(args, i) do
            sPrint := sPrint + args[i, j] + #9
kann aber in der ersten kein VarArrayLowBound zuweisen da diese 2 Parameter abverlangt.

jemand ne idee ?
Gibt es eine andere alternative für "low"

OT:Anbei komische Formatierung in euren Skript..
Warum setzt sich die nächste zeile hinter dem Quelltext?
Sollte eigentlich drunter stehen.


gruss Emil

Geändert von EWeiss (23. Okt 2010 um 18:26 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Debug Console oder ähnlich

  Alt 24. Okt 2010, 03:13
Ich mache mal hier weiter.
So wie es jetzt ausschaut und nach dem problem mit der String übergabe

Funktioniert es jetzt soweit schon mal.
Allerdings ist das ganze irgendwie nicht so recht Delphi konform.

Delphi-Quellcode:
procedure SetTrace(MainHandle: HWND);
begin
  VBArray := VarArrayCreate([0, 2], varVariant);
  VBArray[0] := 'BASSVIS_Init ';
  VBArray[1] := '';
  VBArray[2] := vartostr(GlobalVisInit);
  Trace(VBArray, 3);

  VBArray := VarArrayCreate([0, 2], varVariant);
  VBArray[0] := 'Application Handle';
  VBArray[1] := '';
  VBArray[2] := vartostr(MainHandle);
  Trace(VBArray, 3);
end;
Wie könnte ich am besten diese Aufrufe so übergeben das ich nur
noch eine Zeile dafür benötige

In VB ist meine Function so ausgelegt
Code:
Public Sub Trace(ParamArray args() As Variant)
Wobei args() auf die Daten im ParamArray zugreift das bis zu einer tiefe von 59 definiert sein kann

In Delphi wäre das in etwa gleichzusetzen mit dem..
Delphi-Quellcode:
      ParamData := VarArrayCreate([0,1], varVariant);
      ParamData[0] := 'Value In';
      ParamData[1] := ''; // value out
      ParamArray := PSafeArray(TVarData(ParamData).VArray);
Ich müßte quasi soetwas haben wie diese function
Zitat:
ParamArray args() As Variant
Nur wie läßt sich soetwas in Delphi verwirklichen innerhalb einer Function oder Procedure?
Wobei dann der aufruf in etwa so aussehen könnte.

Trace('Form_Load Error', '', 'Error', err.Number, err.Description) Und beliebig erweiterbar bis zu 59 Einträge (VB).

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Debug Console oder ähnlich

  Alt 24. Okt 2010, 07:57
Ich habe keine Ahnung wie das zusammen mit VB tickt, aber meinst Du so etwas ??
Delphi-Quellcode:
Type TArray=Array of Variant;
var
  Form1: TForm1;

implementation


{$R *.dfm}
Procedure Trace(Args:Tarray);
var
  i:Integer;
begin
  Form1.Memo1.Lines.Clear;
  for I := Low(Args) to High(Args) do Form1.Memo1.Lines.Add(Args[i])

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    Trace(VarArrayOf(['test',1,'Haus']))
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Debug Console oder ähnlich

  Alt 24. Okt 2010, 11:16
Zitat:
aber meinst Du so etwas ??
Jo das wäre ein Ansatz..
Danke.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:25 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