AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi "gelöst"clipboard als txt datei abspeichern
Thema durchsuchen
Ansicht
Themen-Optionen

"gelöst"clipboard als txt datei abspeichern

Ein Thema von Triples · begonnen am 21. Jan 2008 · letzter Beitrag vom 21. Jan 2008
Antwort Antwort
Triples

Registriert seit: 10. Aug 2005
Ort: NRW
22 Beiträge
 
#1

"gelöst"clipboard als txt datei abspeichern

  Alt 21. Jan 2008, 00:47
Guten Nabend
Ich komme mal sofort zum punkt.
Und zwar möcht ich den text aus dem clipboard als txt datei abspeichern,wo aber gefprüft wird ob der eintrag schon drin steht.und wenn ja zur nächsten zeile spring und dort weiter schreibt bzw nicht den 1 eintrag überschreibt.
Habe hier auf dieser seite http://delphi.about.com/cs/adptips20...ltip0301_4.htm nun ein code snipsel gefunden.
Leider bekomme ich beim compelieren ne fehler meldung.
Könte jemand so net sein und mir unter die arme greifen bitte.
Wo habe ich was an dieser stelle falsch gemacht?

Delphi-Quellcode:
begin
ClipboardTxtToFile(cliptext.txt);
end
Zitat:
[Fehler] main12.pas(193): Undefinierter Bezeichner: 'c'
[Fehler] main12.pas(193): Operator oder Semikolon fehlt
[Fehler] main12.pas(194): ';' erwartet, aber '.' gefunden
[Fehler] main12.pas(200): Deklaration erwartet, aber Dateiende gefunden
[Fataler Fehler] Auslesen.dpr(5): Verwendete Unit 'main12.pas' kann nicht compiliert werden
Delphi-Quellcode:
procedure TfrmMain12.Memo1Change(Sender: TObject);
begin
showmessage(Clipboard.AsText);

end;

procedure TfrmMain12.Edit1Change(Sender: TObject);
begin
Memo1.Text := Clipboard.AsText;
end;
procedure TfrmMain12.Button1Click(Sender: TObject);
function ClipboardTxtToFile
         (sFileTXT : string) : boolean;
var
   ps1, ps2 : PChar;
   dwLen : DWord;
   tf : TextFile;
   hData : THandle;
begin
  Result := False;
  with Clipboard do begin
   try
    Open;
     if(HasFormat(CF_TEXT)) then begin
      hData := GetClipboardData(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;
begin
ClipboardTxtToFile(cliptext.txt);
end.
Edit so habe es geschaft nun mit diesem Code exampel die zwischen ablage zu speichern,aber leider wird immer der erste eintrag wi der saveclipboard.txt überschrieben.
Wie geht das nun das dieses nicht pasiert sonder delphi die datei halt öfnet und das schreiben fortsetz und nicht überschreibt?

Delphi-Quellcode:
var
  slWork : TStringList;

begin
  // Zwischenablage öffnen
  Clipboard.Open;
  try
    // Wenn kein Text enthalten ist, fertig
    if not Clipboard.HasFormat(CF_TEXT) then exit;
    // Der Einfachheit halber eine Stringliste zum Auslesen
    // dann lässt sich einfach SaveToFile benutzen
    slWork := TStringList.Create;
    try
      slWork.Text := Clipboard.AsText;
      slWork.SaveToFile('c:\temp\saveclipboard.txt');
    finally
      FreeAndNil(slWork);
    end;
  finally
    Clipboard.Close;
  end;
end;
So sollte die datei später aufgebaut sein.
Delphi-Quellcode:
1 eintrag der zwischenablage
2 eintrag
3 eintrag
Edit so nun habe es ich selber gelöst.

Delphi-Quellcode:
procedure TfrmMain12.Button1Click(Sender: TObject);
var
  slWork : TStringList;
  dir, log : string;
begin
  // Zwischenablage öffnen
  Clipboard.Open;
  try
    // Wenn kein Text enthalten ist, fertig
    if not Clipboard.HasFormat(CF_TEXT) then exit;
    // Der Einfachheit halber eine Stringliste zum Auslesen
    // dann lässt sich einfach SaveToFile benutzen
    slWork := TStringList.Create;
    try
      slWork.Text := Clipboard.AsText;
      dir := ExtractFilePath(Application.Exename);
      log := Edit1.text;;
      AppendOrWriteTextToFile(dir + '\logfile.txt', log)
    finally
      FreeAndNil(slWork);
    end;
  finally
    Clipboard.Close;
  end;
end;
procedure TfrmMain12.Memo1Change(Sender: TObject);
begin
  Button1.Click;
end;

end.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: "gelöst"clipboard als txt datei abspeichern

  Alt 21. Jan 2008, 05:14
Moin Emil,

erst speicherst du den Text aus der Zwischenablage in eine StringList und dann verwirfst du diese StringList, ohne ihren Inhalt an die Datei anzuhängen?

Delphi-Quellcode:
procedure FileAppend(fn: TFileName; s: TStream);
var
  mode: Word;
begin
  if FileExists(fn)
    then mode := fmOpenWrite or fmShareDenyWrite
    else mode := fmCreate;
  with TFileStream.Create(fn, mode) do
  try
    Position := Size;
    CopyFrom(s, 0);
  finally
    Free;
  end;
end;

procedure TDemoForm.Button4Click(Sender: TObject);
var
  s: TStream;
begin
  with Clipboard do
  begin
    Open;
    try
      if Clipboard.HasFormat(CF_TEXT) then
      begin
        s := TStringStream.Create(AsText);
        try
          FileAppend(ExtractFilePath(ParamStr(0)), s);
        finally
          s.Free;
        end;
      end;
    finally
      Close;
    end;
  end;
end;
Freundliche Grüße
  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 01:22 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