AGB  ·  Datenschutz  ·  Impressum  







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

CreateProcess WGet WIN10 Tablet

Ein Thema von joacim · begonnen am 18. Jun 2023 · letzter Beitrag vom 20. Jun 2023
Antwort Antwort
Seite 1 von 2  1 2      
joacim

Registriert seit: 30. Apr 2003
Ort: Immenrode
61 Beiträge
 
Delphi 6 Professional
 
#1

CreateProcess WGet WIN10 Tablet

  Alt 18. Jun 2023, 18:29
Ich versuche Kartenteile von openstreetmap zu laden und verwende WGet

1. Eine BAT Datei mit passenden Parametern funktioniert, Daten landen wie gewünscht, in einer Datei
(erste Gehversuche)
2. Daten sollen nun aus einem Programm abgerufen werden.
3. ich habe DELPHI 6 (ja ich weiß, sehr alt, aber es läuft)
4. Parameter werden aufbereitet und an WGet übergeben, WGet wird mit CreateProcess aufgerufen.
5. Das funktioniert (nach einigen Fehlern meinerseits) jetzt sehr gut.
6. Tests auf zwei Desktop PCs und zwei Notebooks (WIN10) waren ok.
7. Ein anderer Kunde hat ca. 10 andere Tablets damit ausgerüstet, alles ok.
8. Jetzt hat ein Kunde Probleme mit einem out door Tablet (ALGIZ 10X)
9. ALGIZ 10X läuft unter WIN10 enterprise
10. ALGIZ 10X ist bei mir im lokalen Netz angemeldet und kann problemlos kommunizieren
(youtube, gmx usw. ….)
11. Der Zugriff auf den openstreetmap Serve funktioniert einfach nicht,
es werden keine Daten empfangen.
12. die BAT Datei (s. 1) funktioniert auf dem ALGIZ 10X
13. ein Aufruf im Browser funktioniert auch.
14. Änderungen an der Firewall waren ohne Erfolg.
15. WGet liegt im Programmverzeichnis
16. Ich habe das betreffende Fenster isoliert und als eigenständiges Hauptprogramm laufen lassen, das
scheint auf dem ALGIZ 10X zu funktionieren.

17. Dann habe ich nur eine form mit einem Button „drum herum gebastelt“. Der Button öffnet das Fenster,
welches als eigenes Hauptprogramm eben noch funktionierte. Als Unter-Fenster geht wieder nichts.

Das Ganze beschäftigt mich jetzt schon den ganzen Tag und ich habe keine Idee was ich noch probieren könnte.
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
472 Beiträge
 
#2

AW: CreateProcess WGet WIN10 Tablet

  Alt 18. Jun 2023, 18:59
Das Ganze beschäftigt mich jetzt schon den ganzen Tag und ich habe keine Idee was ich noch probieren könnte.
mORMot1 läuft mit Delphi 6. Dort gibt es die Funktion SynCrtSock.HttpGet(). Das ersetzt WGet. Mit WIN10 funktioniert es sehr gut.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#3

AW: CreateProcess WGet WIN10 Tablet

  Alt 18. Jun 2023, 22:47
Naja, ist auch die Frage w2arum es noch D6 sein muss.
Falls es ein Hobby Projekt ist gibt's ja auch eine Community Edition kostenlos...
Ich mein' ja nur, dass zwischenzeitlich auch viele andere neue Dinge dazu gekommen sind.
Wär' vielleicht doch mal eine Überlegung wert...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: CreateProcess WGet WIN10 Tablet

  Alt 18. Jun 2023, 23:31
Und bei all dem Text ... Warum steht nirgends was du nun eigentlich wie machst?

Welche Verzeichnisse als Speicherziel
und wie wird WGet aufgerufen.
Das Arbeitsverzeichnis?
Die Rückgabewerte werden doch natürlich auch alle usgewertet, oder etwas nicht?

Und warum nicht sowas wie Indy, WinSock oder Sonstewas, um es direkt im Programm zu laden.
$2B or not $2B
  Mit Zitat antworten Zitat
joacim

Registriert seit: 30. Apr 2003
Ort: Immenrode
61 Beiträge
 
Delphi 6 Professional
 
#5

AW: CreateProcess WGet WIN10 Tablet

  Alt 19. Jun 2023, 07:55
Erstmal danke für die Antworten, trotz Wochenende.

Für CreateProcess verwende ich ExecuteFile, gefunden in:
https://www.delphi-treff.de/tipps-tr...createprocess/

Als Parameter wird etwas in der Art wie:

"wget.exe" -O C:\Users
\_KU\OSM_Debug\OSM_Tiles\Tile_10_549_339.png -U "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0" https://tile.openstreetmap.org/10/549/339.png

übergeben. Im Fehlerfall liefert WGet : „error 4 Network failure“

Wie schon geschrieben, läuft das auf mehreren PCs problemlos. Über das Vorgehen kann man bestimmt diskutieren. Diese Lösung ist eben historisch gewachsen.

Meine Frage zielte auch mehr darauf, ob jemand eine Idee hat, warum dieser Aufruf auf etlichen PCs funktioniert und auf einem bestimmten Tablet dann plötzlich keine Daten liefert.

Besonders irritierend finde ich das Verhalten wie unter 16 und 17 beschrieben.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: CreateProcess WGet WIN10 Tablet

  Alt 19. Jun 2023, 08:04
Grundsätzlich empfehle ich erst einmal, mit dem Process Monitor zu schauen, was da passiert.

Viel mehr kann man dazu so gar nicht sagen. Typische Probleme wären z.B. ein unterschiedliches Arbeitsverzeichnis (wird an CreateProcess übergeben), aber da würde kaum ein Netzwerkfehler kommen.
Vielleicht liegt es aber auch am im Programm verwendeten Manifest. Das wäre z.B. ein möglicher Unterschied zwischen einem neuen Projekt mit dem einzelnen Formular und dem Programm. Ich weiß nicht mehr, ob Delphi 6 schon das XPManifest kannte, aber wenn du das verwendest, würde das ja Windows sagen, dass dein Programm für eine über 20 Jahre Windowsversion geschrieben wurde. Da käme dann ggf. die Kompatibilitätsfunktionalität ins Spiel.

Aber für die Fehlerbehandlung wäre es wirklich einfacher, wenn du den Download direkt im Programm machst. Dafür kannst du Delphi 6 ohne Weiteres aufgrund der heutigen Sicherheitsverfahren nicht mehr nutzen (das zum Thema "aber es läuft" ), aber wenn du keine aktuelle Version einsetzen möchtest, kannst du zusätzliche Bibliotheken wie das von Thomas genannte mORMot nutzen. Viele Alternativen hast du da nicht, da die meisten (wie ICS) erst ab Delphi 7 oder noch höher funktionieren. Der große Vorteil ist, dass du direkt die Ergebnisse prüfen kannst und auch direkte Fehlerinformationen bekommst.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
472 Beiträge
 
#7

AW: CreateProcess WGet WIN10 Tablet

  Alt 19. Jun 2023, 16:25
Als Ergänzung zu Sebastians Beitrag. Die Vorteile von mORMot sind:
  • mORMot1 ist für Delphi 6 spezifiziert und wird noch einige Jahre supportet.
  • Die mORMot Installation beschränkt sich auf das Setzen der Bibliothekspfade (siehe Hilfe). Es ist in 3 Minuten auf dem Rechner und bei Nichtgefallen in 3 Sekunden wieder gelöscht.
  • Folgendes reicht zum Testen:
    Delphi-Quellcode:
    uses
      SynCommons, SynCrtSock;
      
    var
      url: SockString;
      content: SockString;
      imgFileName: TFileName;
    begin
      url := 'https://tile.openstreetmap.org/10/549/339.png';
      content := HttpGet(url);
      if content <> 'then
      begin
        imgFileName := ChangeFileExt(ExeVersion.ProgramFileName, '.png');
        if FileFromString(content, imgFileName) then
          ShowMessage(Format('Es wurden %s geladen.', [KB(FileSize(imgFileName))]));
      end;
Bis bald...
Thomas
  Mit Zitat antworten Zitat
joacim

Registriert seit: 30. Apr 2003
Ort: Immenrode
61 Beiträge
 
Delphi 6 Professional
 
#8

AW: CreateProcess WGet WIN10 Tablet

  Alt 20. Jun 2023, 06:39
nochmal danke,
Die Anregung mit mORMot1 werde ich testen, gerade weil es auch für Delphi 6 vefügbar ist.
Trotzdem würde ich gerne verstehen, welche Eigenart des Tablets sie sonst funktioniernede
Abfrage verhindert.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: CreateProcess WGet WIN10 Tablet

  Alt 20. Jun 2023, 08:17
Dabei kann ja der genannte Process Monitor helfen. Wenn du die Requests genauer anschauen möchtest, die gesendet werden und insbesondere die Antwort, wäre Wireshark eine Option.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: CreateProcess WGet WIN10 Tablet

  Alt 20. Jun 2023, 11:50
Und auch die Auswertung der Rückgabewerte.

z.B. dein verwendetes ExecuteFile
* egal ob der Befehl erfolgreich war
* oder die Anwendung nicht gefunden wurde (Rückgabe und Fehlercode des CreateProcess -> Result und wenn Fehler MSDN-Library durchsuchenGetLastError)
* oder die Anwendung einen Fehler hatte (deren ExitCode -> MSDN-Library durchsuchenGetExitCodeProcess)
* oder Abbruch durch bTerminate

diese Funktion sagt dazu garnichts



Delphi-Referenz durchsuchenSysErrorMessage
Delphi-Referenz durchsuchenRaiseLastOSError
uvm.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 02:38 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