![]() |
D5 + Liste überwachter Ausdrücke speichern???
Hallo ich suche eine Möglichkeit (in Delphi5), das was in 'Liste überwachter Ausdrücke' steht zu speichern. Gibt es Da eine Möglichkeit?
Das wäre mir eine deutliche Hilfe beim Debuggen. Gruß BBB |
Re: D5 + Liste überwachter Ausdrücke speichern???
Hallo
Möchtest du die Ausdrücke nach dem Speichern wieder Laden? |
Re: D5 + Liste überwachter Ausdrücke speichern???
Nein, ich möchte eigentlich nur Ausdrücke und Werte in eine Textdatei schreiben, um die Fehlersuche zu vereinfachen. Habe es sehr oft, da bräuchte ich mir nicht immer den Inhalt der Variablen zu notieren, wenn ich sie vergleichen will.
|
Re: D5 + Liste überwachter Ausdrücke speichern???
Es wird wohl keine (einfache) Möglichkeit geben, diese Werte zu speichern.
|
Re: D5 + Liste überwachter Ausdrücke speichern???
Würde es dir reichen, es üger ein Externes Programm zu machen?
TWatchWindow (frei) oder TEditorDockPanel (angedockt) suchen (eventuell noch Strg+Alt+W simmulieren und es anzeigen lassen) darauf ist dann TTabSet und 'ne TListView und dann die ListView entsprechend ansteuern notfalls ebenfalls via Tastensimulation - Strg+E (Ausdruck editieren) und dann die Komopnenten (Edits und CheckBoxen) auslesen - Strg+A (Asdruck erstellen) und dann die Komopnenten beschreiben |
Re: D5 + Liste überwachter Ausdrücke speichern???
ich werde es mir mal anschauen...
danke gibt es da einen Link zu, hab auf die Schnelle bei Google nichts gefunden... |
Re: D5 + Liste überwachter Ausdrücke speichern???
Nee, du müßttest halt die Fenster/Komponenten suchen (z.B.
![]() ![]() Und das Ganze dann in einem kleinen Programm verbauen, welches sich bestimmt gut per TrayIcon neben der Uhr verstecken könnte. |
Re: D5 + Liste überwachter Ausdrücke speichern???
Zitat:
Bei D6 ist es ein DrawGrid (o.ä.), welches sich nicht per WM_GETTEXT o.ä. auslesen läßt |
Re: D5 + Liste überwachter Ausdrücke speichern???
Hab jetzt einiges probiert, aber leider funzt es nicht...
Code:
FindWindowEx gibt 0 aus. Und wenn ich mit WinSpy das Handle ermittle und manuell eintrage, dann wird kein Text ausgelesen...
program Project2;
uses sysutils, windows, messages, classes, dialogs; var hMain: DWORD; hSub: DWORD; iLen: integer; pText: PChar; begin hMain := FindWindow(nil, 'Delphi 5'); if (hMain = 0) or (hMain = INVALID_HANDLE_VALUE) then begin ShowMessage('Meldung nicht gefunden'#13#10 + SysErrorMessage(GetLastError)); Exit; end else begin hSub := FindWindowEx(hMain, 0, 'TDrawGrid', NIL); if hSub = 0 then begin ShowMessage('Inhalt nicht gefunden'#13#10 + SysErrorMessage(GetLastError)); Exit; end else begin iLen := SendMessage(hSub, WM_GETTEXTLENGTH, 0, 0) + 1; if iLen = 0 then begin ShowMessage('Kein Inhalt'); Exit; end else begin pText := AllocMem(iLen); try if SendMessage(hSub, WM_GETTEXT, wParam(iLen), lParam(pText)) = 0 then begin ShowMessage('0 Zeichen kopiert'); end else begin showmessage(pText); end; finally FreeMem(pText, iLen); end; end; end; end; end. |
Re: D5 + Liste überwachter Ausdrücke speichern???
Zitat:
Zitat:
|
Re: D5 + Liste überwachter Ausdrücke speichern???
Schade!
:( Also bleibts auch im digitalen Zeitalter bei Zettel und Stift... |
Re: D5 + Liste überwachter Ausdrücke speichern???
Hab doch noch eine Lösung gefunden und möchte Euch natürlich noch dran teilhaben lassen. Mein Kollege hat mir verraten, dass man mit STRG+C die aktuell markierte Zeile in den überwachten Ausdrücken kopieren kann. Drum hab ich mir ein kleines Prog geschrieben, dass die Zeilen dann direkt in eine Datei schreibt:
Delphi-Quellcode:
Das ganze auf eine Sondertaste meiner Tastatur gelegt... und es funzt wunderbar.
program ClipboardTextToFile;
uses sysutils, dialogs, Classes, Windows, clipbrd; var Liste: TStringlist = nil; Ablage: TClipBoard = nil; Dateiname: string = 'clipboard.txt'; begin //Tastendruck strg+c simmulieren keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0); keybd_event(99, 81, 0, 0); keybd_event(99, 81, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0); if paramcount > 0 then begin if (uppercase(paramstr(1)) = '/HELP') or (paramstr(1) = '/?') then begin showmessage('Fügt den Inhalt der Zwischenablage an eine Datei an, die als Parameter übergeben wird'); Dateiname:=''; end else Dateiname := Paramstr(1); end; try Ablage := TClipBoard.Create; Liste := TStringlist.create; if Fileexists(Dateiname) then Liste.LoadFromFile(Dateiname); Liste.add(Ablage.AsText); Liste.SaveToFile(Dateiname); finally Liste.Free; Ablage.Free; end; end. |
Re: D5 + Liste überwachter Ausdrücke speichern???
Ok, es funzte doch nicht so wunderbar.
Anscheinend muss man mit
Delphi-Quellcode:
noch so lange warten, bis die Daten auch im Zwischenspeicher sind.
Ablage := TClipBoard.Create;
Also:
Delphi-Quellcode:
Slepp(100);
Ablage := TClipBoard.Create; |
Re: D5 + Liste überwachter Ausdrücke speichern???
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
Ich habe nun meinen eigenen (Quick&Dirty) "Watch List-Saver" geschrieben. Sollte unter D5 - D2009 funktionieren (getestet mit D6/D2009) Funktion: Speichert alle Einträge der "Watch Liste" in eine Datei. Wahlweise macht es ein "Append" Verwendete Funktionen:
Delphi-Quellcode:
Einfacher Aufruf: SaveWatchList.exe [AusgabeDatei]
procedure PostKeyEx(hWindow: HWnd; key: Word; const shift: TShiftState; SpecialKey: Boolean);
procedure SelectAll_CopyClipboard(wndParent, wndChild: HWND; bChildVST: Boolean); function SaveClipBoardToFile(FileName: string; bAppendFile: Boolean): string; function HandleParamstr(out FileName: string; out bAppendFile: Boolean): Boolean; function FindWatchWindow(out wndWatchWindow, wndChild: HWND; out bChildVST: Boolean): Boolean; Hinweise: Funktioniert nicht, wenn das Watch Fenster angedockt ist, wenn mehrere Watch Fenster offen sind, findet es evtl. nicht das gewünschte. PS: Lässt sich z.B als Tool in der Delphi IDE hinzufügen. (Tools | Configure Tools...) |
Re: D5 + Liste überwachter Ausdrücke speichern???
Nun bei mir funktioniert es leider nicht.
Ich kann in dem Feld 'Liste überwachter Ausdrücke' Leider nicht alles markieren. bei der Zeile
Delphi-Quellcode:
Springt er nur zum Ende und kopiert dann den letzten leeren Ausdruck!
PostKeyEx(wndChild, VK_END, [ssCtrl, ssShift], True);
|
Re: D5 + Liste überwachter Ausdrücke speichern???
So, ich habe auch noch ein bissel gebastelt und nun funzt es. Hab aber nur mit Delphi 5 getestet. Dafür scheint es jetzt auch bei angedocktem Fenster zu funktionieren und auch bei mehreren Fenstern, dafür aber nur für die deutsche Delphi Version.
@toms: Sag mal, ist der TVirtualStringTree für höhere Delphiversionen??? Hier beim Testen hab ich den Pfad nie durchlaufen. |
Re: D5 + Liste überwachter Ausdrücke speichern???
Zitat:
(oder bei Shift+End ?) Zitat:
Zitat:
("(Pos('Watch List', Caption) > 0)" hinzugefügt.)
Delphi-Quellcode:
function EnumProcTTabSheet(wnd: HWND; pwnd: pHWND): BOOL; stdcall;
var buf, Caption: array[0..255] of Char; begin Result := True; GetClassName(wnd, buf, SizeOf(buf) - 1); SendMessage(wnd, WM_GETTEXT, 256, Integer(@Caption)); if (buf = 'TTabSheet') and ((Pos('Liste überw', Caption) > 0) or (Pos('Watch List', Caption) > 0)) then begin pwnd^ := wnd; Result := False; end; end; function EnumProcTWatchWindow(wnd: HWND; pwnd: pHWND): BOOL; stdcall; var buf, Caption: array[0..255] of Char; begin Result := True; GetClassName(wnd, buf, SizeOf(buf) - 1); SendMessage(wnd, WM_GETTEXT, 256, Integer(@Caption)); if (buf = 'TWatchWindow') and ((Pos('Liste überw', Caption) > 0) or (Pos('Watch List', Caption) > 0)) then begin pwnd^ := wnd; Result := False; end; end; |
Re: D5 + Liste überwachter Ausdrücke speichern???
Zitat:
Hab jetzt auch noch Fehler behoben und die Tastenkombinationen für 'IDE-Klassisch' eingefügt. |
Re: D5 + Liste überwachter Ausdrücke speichern???
Zitat:
|
Re: D5 + Liste überwachter Ausdrücke speichern???
Na schöner wäre es schon, aber ich denke bei so einem kleinen Prog ist das mit der Effizienz nicht ganz so schlimm...
|
Re: D5 + Liste überwachter Ausdrücke speichern???
Liste der Anhänge anzeigen (Anzahl: 1)
Nun hab ichs zum ersten Mal im produktiven Einsatz gehabt, und:
es funzt natürlich nicht. Das Problem ist diese Zeile:
Delphi-Quellcode:
Das Programm wartet in dieser Zeile, bis Delphi den Debugger beendet hat, was das Programm natürlich unsinnig macht.
SendMessage(wnd, WM_GETTEXT, 256, Integer(@Caption));
Momentan bleibt nur die Möglichkeit, die Abfrage nach der Caption rauszunehmen. Ich hoffe mal, dass dennoch das richtige Fenster gefunden wird. Bei scheint es auch ohne die Captionabfrage zu laufen. |
Re: D5 + Liste überwachter Ausdrücke speichern???
Hallo,
ich muss da Thema mal wieder hochholen. Ich habe jetzt ein Jahr mit dem Prog wunderbar gearbeitet. Nun hab ich aber einen neuen Rechner (WIN7x64). Und nun funzt es nicht mehr. Ich weiß nicht, was anders läuft. Zumindest schneint PostkeyEx nicht mehr zu funktionieren... Ich arbeite mit Delphi 5 und angedocktem Watchlistfenster. Kann mir wer weiterhelfen? Hab schon einiges Probiert, komme aber einfach nicht weiter.... Gruß BBB |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19: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