AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi D5 + Liste überwachter Ausdrücke speichern???
Thema durchsuchen
Ansicht
Themen-Optionen

D5 + Liste überwachter Ausdrücke speichern???

Ein Thema von Bomberbb · begonnen am 26. Nov 2008 · letzter Beitrag vom 26. Feb 2010
Antwort Antwort
Seite 2 von 3     12 3      
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#11

Re: D5 + Liste überwachter Ausdrücke speichern???

  Alt 2. Dez 2008, 08:51
Schade!



Also bleibts auch im digitalen Zeitalter bei Zettel und Stift...
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#12

Re: D5 + Liste überwachter Ausdrücke speichern???

  Alt 3. Dez 2008, 14:02
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:
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.
Das ganze auf eine Sondertaste meiner Tastatur gelegt... und es funzt wunderbar.
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#13

Re: D5 + Liste überwachter Ausdrücke speichern???

  Alt 3. Dez 2008, 15:01
Ok, es funzte doch nicht so wunderbar.
Anscheinend muss man mit
Ablage := TClipBoard.Create; noch so lange warten, bis die Daten auch im Zwischenspeicher sind.
Also:

Delphi-Quellcode:
Slepp(100);
Ablage := TClipBoard.Create;
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#14

Re: D5 + Liste überwachter Ausdrücke speichern???

  Alt 4. Dez 2008, 07:36
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:
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;
Einfacher Aufruf: SaveWatchList.exe [AusgabeDatei]

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...)
Angehängte Dateien
Dateityp: dpr savewatchlist_399.dpr (5,4 KB, 11x aufgerufen)
Thomas
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#15

Re: D5 + Liste überwachter Ausdrücke speichern???

  Alt 4. Dez 2008, 14:36
Nun bei mir funktioniert es leider nicht.
Ich kann in dem Feld 'Liste überwachter Ausdrücke' Leider nicht alles markieren.
bei der Zeile
PostKeyEx(wndChild, VK_END, [ssCtrl, ssShift], True); Springt er nur zum Ende und kopiert dann den letzten leeren Ausdruck!
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#16

Re: D5 + Liste überwachter Ausdrücke speichern???

  Alt 4. Dez 2008, 16:54
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.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#17

Re: D5 + Liste überwachter Ausdrücke speichern???

  Alt 4. Dez 2008, 20:31
Zitat von Bomberbb:
Nun bei mir funktioniert es leider nicht.
Ich kann in dem Feld 'Liste überwachter Ausdrücke' Leider nicht alles markieren.
bei der Zeile
PostKeyEx(wndChild, VK_END, [ssCtrl, ssShift], True); Springt er nur zum Ende und kopiert dann den letzten leeren Ausdruck!
Wird denn alles markiert, wenn du von Hand Ctrl+Shift+End drückst?
(oder bei Shift+End ?)

Zitat von Bomberbb:
Sag mal, ist der TVirtualStringTree für höhere Delphiversionen??? Hier beim Testen hab ich den Pfad nie durchlaufen.
Bei den neueren Delphi Versionen (ab D2005?) wurde das DrawGrid durch einen VST ersetzt.

Zitat von Bomberbb:
und auch bei mehreren Fenstern, dafür aber nur für die deutsche Delphi Version.
Mit diesen Änderungen sollte es auch bei der englischen Version funktionieren:
("(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;
Thomas
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#18

Re: D5 + Liste überwachter Ausdrücke speichern???

  Alt 5. Dez 2008, 10:04
Zitat:
Wird denn alles markiert, wenn du von Hand Ctrl+Shift+End drückst?
(oder bei Shift+End ?)
Nein, bei mir scheinen Mehrfachmarkierungen nicht möglich zu sein.

Hab jetzt auch noch Fehler behoben und die Tastenkombinationen für 'IDE-Klassisch' eingefügt.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#19

Re: D5 + Liste überwachter Ausdrücke speichern???

  Alt 5. Dez 2008, 10:06
Zitat von Bomberbb:
Zitat:
Wird denn alles markiert, wenn du von Hand Ctrl+Shift+End drückst?
(oder bei Shift+End ?)
Nein, bei mir scheinen Mehrfachmarkierungen nicht möglich zu sein.
Schade..Ab D6 ist eine Mehrfachmarkierung möglich. Somit muss nicht jeder einzelne Eintrag in die Zwischenablage kopiert werden, was natürlich effizienter ist.
Thomas
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#20

Re: D5 + Liste überwachter Ausdrücke speichern???

  Alt 5. Dez 2008, 11:20
Na schöner wäre es schon, aber ich denke bei so einem kleinen Prog ist das mit der Effizienz nicht ganz so schlimm...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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:48 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