AGB  ·  Datenschutz  ·  Impressum  







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

Konsole: Read wann zu Ende?

Ein Thema von Chewie · begonnen am 28. Mai 2003 · letzter Beitrag vom 28. Mai 2003
Antwort Antwort
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#1

Konsole: Read wann zu Ende?

  Alt 28. Mai 2003, 16:53
Ich hab mir vorhin gedacht: Hey, es wäre doch praktisch, ein Programm zu haben, das die Ausgabe eines Konsolenprogramms (in meinem Fall mysqldump) in die Zwischenablage kopiert.

Folgenden Code hab ich dafür geschrieben:
Delphi-Quellcode:
var
  s, fulls: String;
  Clipboard: TClipboard;
begin
  fulls := '';
  s := '';
  repeat
    fulls := fulls + #13#10 + s;
    ReadLn(s);
  until //bis wohin??
  Clipboard := TClipBoard.Create;
  Clipboard.SetTextBuf(@fulls[1]);
  Clipboard.Free;
end.
Ich führe dann z.B. den Befehl
Code:
mysqldump --user=root -A | cmd2clip
] (cmd2clip ist der Name meines Programms) aus. Das Problem ist jetzt, dass ich nicht weiß, wann die Ausgabe zu Ende ist. Gibt es irgendein Zeichen am Ende der Ausgabe oder so etwas?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von RomanK
RomanK

Registriert seit: 7. Jun 2002
Ort: Kirchheim unter Teck
1.036 Beiträge
 
Delphi 7 Personal
 
#2
  Alt 28. Mai 2003, 17:06
Hoi,
ist jetzt nicht die Lösung für dein Prob aber schau dir diesen Code mal an.
Du känntest das ganze auch mit
Code:
 > C:\cmd.txt
in eine Datei umleiten und dann auslesen.
Roman Keller
Krieg ist Gottes Art den Amerikanern Geographie beizubringen!
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3
  Alt 28. Mai 2003, 18:39
So, Problem gelöst. Hätt ich eigentlich früher drauf kommen können

Ich hatte anscheinenend vergessen, dass die Standardein- und ausgabe eigentlich (zumindest in Pascal) nicht groß was anderes wie eine Textdatei ist. Und da gibts ja neben den schönen Read und Write-Funktionen natürlich auch das eof, und damit hats dann geklappt.

So sieht das ganze aus. Wenn einer also ein Konsolenprogramm braucht, mit dem die Eingabe in die Zwischenablage kopiert werden soll, einfach folgenden Source kompilieren und fertig:
Delphi-Quellcode:
program Cmd2Clip;
{$APPTYPE CONSOLE}
uses
  clipbrd;

var
  s, fulls: String;
  Clipboard: TClipboard;
begin
  fulls := '';
  s := '';
  while not eof do
  begin
    ReadLn(s);
    fulls := fulls + #13#10 + s;
  end;
  Clipboard := TClipBoard.Create;
  Clipboard.SetTextBuf(@fulls[1]);
  Clipboard.Free;
end.

Edit: Acch Schmarrn, wenn ich aus ner repeat-Schleife eine while-Schleife mache, dann könnt ich den Code doch auch etwas ändern
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  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 15:25 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