AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Text Datei von Delphi Programm an einen Linux PC senden
Thema durchsuchen
Ansicht
Themen-Optionen

Text Datei von Delphi Programm an einen Linux PC senden

Ein Thema von A.Griffin · begonnen am 14. Mär 2017 · letzter Beitrag vom 21. Mär 2017
Antwort Antwort
Seite 3 von 3     123   
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#21

AW: Text Datei von Delphi Programm an einen Linux PC senden

  Alt 16. Mär 2017, 15:50
Wir haben das mal ungefähr so gemacht:

Delphi-Quellcode:
function SendFile:Boolean;
var output:String;
begin
output:=CaptureConsoleOutput(Command);
Result:=Pos('100%',output)>0;
end;


//Diese Funktion hab ich mal irgendwo gefunden (hier in der DP ?)
function CaptureConsoleOutput(const ACommand: String):String;
const
    CReadBuffer = 2400;
var
    saSecurity: TSecurityAttributes;
    hRead: THandle;
    hWrite: THandle;
    suiStartup: TStartupInfo;
    piProcess: TProcessInformation;
    pBuffer: array [0 .. CReadBuffer] of AnsiChar;
    dBuffer: array [0 .. CReadBuffer] of AnsiChar;
    dRead: DWord;
    dRunning: DWord;
    erg:String;
begin
    saSecurity.nLength := SizeOf(TSecurityAttributes);
    saSecurity.bInheritHandle := True;
    saSecurity.lpSecurityDescriptor := nil;
    erg:='';
    if CreatePipe(hRead, hWrite, @saSecurity, 0) then
    begin
        FillChar(suiStartup, SizeOf(TStartupInfo), #0);
        suiStartup.cb := SizeOf(TStartupInfo);
        suiStartup.hStdInput := hRead;
        suiStartup.hStdOutput := hWrite;
        suiStartup.hStdError := hWrite;
        suiStartup.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
        suiStartup.wShowWindow := SW_HIDE;

        if CreateProcess(nil, pChar(ACommand+' '), @saSecurity, @saSecurity, True, NORMAL_PRIORITY_CLASS, nil, nil, suiStartup, piProcess) then
        begin
            //repeat
                dRunning := WaitForSingleObject(piProcess.hProcess, 2000);
                Application.ProcessMessages();
                repeat
                    dRead := 0;
                    ReadFile(hRead, pBuffer[0], CReadBuffer, dRead, nil);
                    pBuffer[dRead] := #0;
                    OemToCharA(pBuffer, dBuffer);
                    erg:=dBuffer;
                until (dRead < CReadBuffer);
            //until (dRunning <> WAIT_TIMEOUT);
            CloseHandle(piProcess.hProcess);
            CloseHandle(piProcess.hThread);
        end;
        CloseHandle(hRead);
        CloseHandle(hWrite);
    end;
    Result:=erg;
end;

function Command: String;
var path:String;
begin
  //hier lag die PSCP.exe mit im Programm-Verzeichnis, daher:
  path:=ExtractFilePath(Application.ExeName);
  Result:=path+'pscp.exe -P '+Port+' -pw '+pswrd+' '+
          Dateienname+' '+username+'@'+URL+':'+targetdir;

  //alt mit keyfile im Programm-Verzeichnis:
  //Result:=path+'pscp.exe -P '+Port+' -i '+path+keyfile+' '+
  // Dateiename+' '+username+'@'+URL+':'+targetdir;
end;
Bei fernsteuern der ganzen Putty-Dinger muss man nur aufpassen, wenn mal der Server wechselt oder so, da Putty dann nachfragt, wenn eine andere Signatur gefunden wird (macht ja Sinn). Aber wenn das im Batch-Betrieb passiert ist das nervig, wobei es da wohl auch Parameter gibt, die dan ggf. verhindern können?
Ralph
  Mit Zitat antworten Zitat
BrightAngel

Registriert seit: 13. Mär 2007
130 Beiträge
 
#22

AW: Text Datei von Delphi Programm an einen Linux PC senden

  Alt 16. Mär 2017, 16:17
Ja, aber er hat es ja jetzt mit WinExec gemacht. Hatte mich da gefragt, wie er den Erfolg auswertet. Das ist ja mit CreateProcess eigentlich einfacher, oder?
Do you have the email of god??? --- I have to tell him that I'm happy to be born!
  Mit Zitat antworten Zitat
A.Griffin

Registriert seit: 17. Feb 2017
94 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#23

AW: Text Datei von Delphi Programm an einen Linux PC senden

  Alt 17. Mär 2017, 09:45
Bis jetzt habe ich den Erfolg noch gar nicht ausgewertet.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.075 Beiträge
 
Delphi 12 Athens
 
#24

AW: Text Datei von Delphi Programm an einen Linux PC senden

  Alt 17. Mär 2017, 10:21
Bin nicht sicher ob es in deinem Fall hilft, aber kennst du DosCommand im GetIt Package ?

Das kann sowie ich weiss einiges in Richtung stdin stdout bewerkstelligen.

Rollo
  Mit Zitat antworten Zitat
A.Griffin

Registriert seit: 17. Feb 2017
94 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#25

AW: Text Datei von Delphi Programm an einen Linux PC senden

  Alt 21. Mär 2017, 10:37
DosCommand hört sich sehr interessant an. Wo bekomme ich für Delphi 7 das her?
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.075 Beiträge
 
Delphi 12 Athens
 
#26

AW: Text Datei von Delphi Programm an einen Linux PC senden

  Alt 21. Mär 2017, 13:09
TurboPack/DOSCommand

-obs mit D7 läuft weiss ich nicht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 11:07 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