![]() |
Zwischenablage auslesen
Hallo zusammen
wie das eben so ist möchte man als blutiger Einsteiger manchmal etwas voreilen weil man ja so auf Ideen kommt... In welcher Art von Anwendung (Vorlage) kann mich mit dem folgenden Code eine Exe erzeugen. Das Programm soll unsichtbar im Hintergrund ausgeführt werden. Ziel ist es einen Text aus der Zwischenablage in eine Textdatei zu schreiben. Die Fehlermeldung ist, das Delphi ein Semikolon oder INITIALIZATION erwartet. Wer hilt mir?
Delphi-Quellcode:
[edit=Christian Seehase]Delphi-Tags korrigiert. Mfg, Christian Seehase[/edit]unit Unit1; interface implementation uses Windows, SysUtils, Clipbrd; function ClipboardTxtToFile (sFileTXT : string) : boolean; var ps1, ps2 : PChar; dwLen : LongWord; tf : TextFile; hData : THandle; begin Result := False; with Clipboard do begin try Open; if(HasFormat(CF_TEXT)) then begin hData := GetComponent(CF_TEXT) ; ps1 := GlobalLock(hData) ; dwLen := GlobalSize(hData) ; ps2 := StrAlloc(1 + dwLen) ; StrLCopy( ps2, ps1, dwLen ) ; GlobalUnlock( hData ) ; AssignFile(tf, sFileTXT) ; ReWrite(tf) ; Write(tf, ps2) ; CloseFile(tf) ; StrDispose( ps2 ) ; Result := True; end; finally Close; end; end; end |
Re: Zwischenablage auslesen
Delphi-Quellcode:
Du könntest auch einmal Deine Formatierung überdenken.unit Unit1; interface implementation uses Windows, SysUtils, Clipbrd; function ClipboardTxtToFile (sFileTXT : string) : boolean; var ps1, ps2 : PChar; dwLen : LongWord; tf : TextFile; hData : THandle; begin Result := False; with Clipboard do begin try Open; if(HasFormat(CF_TEXT)) then begin hData := GetComponent(CF_TEXT) ; ps1 := GlobalLock(hData) ; dwLen := GlobalSize(hData) ; ps2 := StrAlloc(1 + dwLen) ; StrLCopy( ps2, ps1, dwLen ) ; GlobalUnlock( hData ) ; AssignFile(tf, sFileTXT) ; ReWrite(tf) ; Write(tf, ps2) ; CloseFile(tf) ; StrDispose( ps2 ) ; Result := True; end; finally Close; end; end; end. Wenn das eine Consolenapplikation werden soll, dann sollte der Programmkopf etwas so ausschauen.
Delphi-Quellcode:
Wenn es eine Windowsapplikation werden sollte, dann fehlt Dir die Deklaration der Widowsform:
program Project2;
{$APPTYPE CONSOLE} uses SysUtils; begin { TODO -oUser -cConsole Main : Insert code here } end.
Delphi-Quellcode:
Grüße
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} end. Klaus |
Re: Zwischenablage auslesen
Zuerst mal vielen Dank für die schnelle Antwort
Zu deiner Anmerkung welche Art von Anwendung es werden soll möchte ich mal kurz erklären was ich vor habe. Eine Macromedia Flash stand alone Anwendung (da bin ich zuhause) schreibt mir Variableninhalte als Text in die Zwischenablage. Flash soll dann die ClipboardTxtToFile.exe mit dem Parameter z.B C:\score.txt ausführen. Der Anwender soll davon nix mit bekommen. Der Hauptfehler war der fehlende Punkt hinter dem letzten end. Mein Script ist jetzt ohne Unterstreichungen sauber. Beim Compilieren erhalte ich jetzt aber folgenden Fehler: [DCC Fehler] Unit1.pas(23): E2010 Inkompatible Typen: 'TComponent' und 'Integer' bei if(HasFormat(CF_TEXT)) then. Würdest du das für mich nochmal nachschauen? Mit bestem Dank Pixelator |
Re: Zwischenablage auslesen
Warum willst denn Du mit Komponenten arbeiten wo Du doch nur Text aus dem Clipboard holen willst?
Delphi-Quellcode:
Grüße
function ClipboardTxtToFile (sFileTXT : string) : boolean;
var tf : TextFile; begin Result := False; with Clipboard do begin try Open; if(HasFormat(CF_TEXT)) then begin AssignFile(tf, sFileTXT) ; ReWrite(tf) ; Write(tf, AsText) ; CloseFile(tf) ; Result := True; end; finally Close; end; end; end; Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 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 by Thomas Breitkreuz