Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Wie bekomme ich ergebniss aus Curl zurück (D6) (https://www.delphipraxis.net/205599-wie-bekomme-ich-ergebniss-aus-curl-zurueck-d6.html)

myicq 27. Sep 2020 10:47

Wie bekomme ich ergebniss aus Curl zurück (D6)
 
Ich muss eine https:// adresse (für REST) zugehen, und meiner etwas ältere D6 version kann das nicht.

Ich traue mich jetzt nicht auf Indy10 umzustellen, um nicht irgendwas zu zerstören.

Curl kann das, und ich kann auch problemlos Curl abrufen. Ich will aber gern die Statuscodes von Curl zurückhaben, also diese: https://ec.haxx.se/usingcurl/usingcurl-returns

Wenn ich aber mit ShellExecute Curl starte, bekomme ich immer "42" ("alles iO"). Heißt das aber nicht nur, das Delphi Curl erfolgreich startet, aber was Curl dann macht ist Delphi unbekannt. Dann kann ich ablesen ob zB ich ein Falsches Parameter setze.

EDIT
Ich habe eine Beispiel gefunden, bei eine Frage über 7Zip:

Code:
function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID:
  PDWORD): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(
        nil,
       @Filename[1],
        nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED
  else
        begin
          if wait = FALSE then
          begin
            if ProcID <> nil then
              ProcID^ := ProcessInfo.dwProcessId;
            result := WAIT_FAILED;
            exit;
          end;
          WaitForSingleObject(ProcessInfo.hProcess, 3000);
          GetExitCodeProcess(ProcessInfo.hProcess, Result);  // <<< here is where exit code is returned
        end;
  if ProcessInfo.hProcess <> 0 then
    CloseHandle(ProcessInfo.hProcess);
  if ProcessInfo.hThread <> 0 then
    CloseHandle(ProcessInfo.hThread);
end;



Und wie ich das benutze:

Code:
 rc2 := RunProcess('c:\utility\CURL\curl.exe' +
                ' ' +  edtParameters.Text
                , SW_HIDE, TRUE, @ProcID);

Rollo62 27. Sep 2020 10:51

AW: Wie bekomme ich ergebniss aus Curl zurück (D6)
 
Versuch es doch mal mit dem RestDebugger.
https://delphiaball.co.uk/2019/12/24...atasetadapter/
https://community.idera.com/develope...nd-c-rest-apps

Damit kann man Testen und sich die Komponenten konfigurieren lassen.

mjustin 27. Sep 2020 13:15

AW: Wie bekomme ich ergebniss aus Curl zurück (D6)
 
Zitat:

Zitat von myicq (Beitrag 1474383)
Ich traue mich jetzt nicht auf Indy10 umzustellen, um nicht irgendwas zu zerstören.

Indy 10.6.2 kann problemlos parallel verwendet werden, wenn man die Komponenten zur Laufzeit erzeugt. Die Packages muss man nicht installieren, die bestehende Indy-Installation bleibt unverändert.

Im Projekt, das Indy verwendet, muss man dem Projekt-Suchpfad die Indy-Verzeichnisse Core, Protocols und System hinzufügen. Dann verwendet es die neue Version.

Aviator 27. Sep 2020 14:05

AW: Wie bekomme ich ergebniss aus Curl zurück (D6)
 
Ich kenne die Indy Sourcen jetzt nicht auswendig, aber ich könnte mir vorstellen, dass dort Dinge drin sind die unter Delphi 6 nicht mehr funktionieren, oder? Auf der Indy Website habe ich jetzt keine Info gefunden, dass es auch noch für Delphi 6 installiert werden kann.

Einen Versuch ist es natürlich trotzdem wert.

Delphi.Narium 27. Sep 2020 16:28

AW: Wie bekomme ich ergebniss aus Curl zurück (D6)
 
Wenn man sich die Mühe macht und mal in das LIB-Verzeichnis der Indys schaut, findet man für jede noch unterstützte Delphi- bzw. C++-Version eine Batchdatei zur Installation.

https://github.com/IndySockets/Indy/tree/master/Lib

Danach wird Delphi ab Version 5 unterstützt.

TurboMagic 28. Sep 2020 19:22

AW: Wie bekomme ich ergebniss aus Curl zurück (D6)
 
Ja ich weiß, jetzt komme ich wieder mit der nervigen Frage ob man nicht doch Mal auf eine neuere Delphi Version wechseln könnte...

Woran scheitert das?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14: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