AGB  ·  Datenschutz  ·  Impressum  







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

Zwischenablage auslesen

Ein Thema von Pixelator · begonnen am 26. Apr 2007 · letzter Beitrag vom 26. Apr 2007
Antwort Antwort
Pixelator

Registriert seit: 26. Apr 2007
Ort: Bonn
4 Beiträge
 
Turbo Delphi für Win32
 
#1

Zwischenablage auslesen

  Alt 26. Apr 2007, 11:16
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:

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
[edit=Christian Seehase]Delphi-Tags korrigiert. Mfg, Christian Seehase[/edit]
Hein Liessem
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Zwischenablage auslesen

  Alt 26. Apr 2007, 11:23
Delphi-Quellcode:
 

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.
Du könntest auch einmal Deine Formatierung überdenken.

Wenn das eine Consolenapplikation werden soll, dann sollte der Programmkopf etwas so ausschauen.

Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

begin
  { TODO -oUser -cConsole Main : Insert code here }
end.
Wenn es eine Windowsapplikation werden sollte, dann fehlt Dir die Deklaration der Widowsform:

Delphi-Quellcode:
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.
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Pixelator

Registriert seit: 26. Apr 2007
Ort: Bonn
4 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Zwischenablage auslesen

  Alt 26. Apr 2007, 12:14
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
Hein Liessem
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Zwischenablage auslesen

  Alt 26. Apr 2007, 12:33
Warum willst denn Du mit Komponenten arbeiten wo Du doch nur Text aus dem Clipboard holen willst?

Delphi-Quellcode:
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;
Grüße
Klaus
Klaus
  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 21:08 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