[gelöst] Check Url WinInet

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
exc-jdbi
Beiträge: 64
Registriert: So 3. Aug 2014, 03:37

[gelöst] Check Url WinInet

Beitrag von exc-jdbi »

Guten Abend Community

Ich verwende für das Prüfen einer Datei im Internet diese Methode
http://www.patilan.com/Delphi/tips1.htm#tips_3

Das funktioniert wunderbar, nur wenn die Datei nicht vorhanden ist, kommt eine Fehlermeldung

Code: Alles auswählen

Projekt ' ' hat Exception-Klasse External: SIGSEGV ausgelöst 
Gibt eine Möglichkeit diese Meldung zu unterdrücken, d.h. Sofern die Datei im Internet nicht vorhanden ist, einfach
Result :=false;

und fertig.

Danke für die Hilfe.


Edit: Vielleicht helfen diese zwei BIlder
FehlerMeldung.jpg
FehlerMeldung.jpg (11.17 KiB) 1675 mal betrachtet
Fehlermeldung2.jpg
Freundliche Grüsse

exc-jdbi
Zuletzt geändert von exc-jdbi am Mo 13. Okt 2014, 20:57, insgesamt 2-mal geändert.

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Check Url WinInet

Beitrag von MmVisual »

Das ganze in Try Except kapseln hilft nicht?
EleLa - Elektronik Lagerverwaltung - www.elela.de

Mathias
Beiträge: 6914
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Check Url WinInet

Beitrag von Mathias »

Bei mir geht es, in meinem Coode, kommt "nicht vorhanden".

Code: Alles auswählen

  if CheckUrl('www.xxxxxxx.ch/test.htm') then begin
    ShowMessage('Vorhanden');
  end else begin
    ShowMessage('nicht Vorhanden');
  end; 
Dein Fehler muss wo anders liegen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

exc-jdbi
Beiträge: 64
Registriert: So 3. Aug 2014, 03:37

Re: Check Url WinInet

Beitrag von exc-jdbi »

Guten Abend MmVisual

Danke für die Antwort. Das habe ich gemacht, nützt aber nichts.

Freundliche Grüsse

exc-jdbi

exc-jdbi
Beiträge: 64
Registriert: So 3. Aug 2014, 03:37

Re: Check Url WinInet

Beitrag von exc-jdbi »

Danke Mathias

Das ist irgendwie aber komisch. Ich krieg sobald die Datei NICHT im Internet ist diese Fehlermeldung, und kann gar nichts machen.

exc-jdbi
Beiträge: 64
Registriert: So 3. Aug 2014, 03:37

Re: Check Url WinInet

Beitrag von exc-jdbi »

Fehler gefunden. So funktionierts.

Code: Alles auswählen

 
try
  try
    ... ... ...
  except
    result:=false;
  end
finally
  if assigned(hfile) then InternetCloseHandle(hfile);
  if assigned(hsession) then InternetCloseHandle(hsession);    
end;
 

Mathias
Beiträge: 6914
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: [gelöst] Check Url WinInet

Beitrag von Mathias »

Irgendwie komisch, das du den Code von CheckUrl abändern musstest, das es funktioniert. Bei mir ging der Original-Code.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

exc-jdbi
Beiträge: 64
Registriert: So 3. Aug 2014, 03:37

Re: [gelöst] Check Url WinInet

Beitrag von exc-jdbi »

Guten Tag Mathias

Das würde ich auch gerne wissen warum. Ist für mich völlig unlogisch.

Bei mir lauft diese Routine in einer Klasse, und es liegt mir nahe, alle Objekte nach getaner Arbeit wieder zurückzusetzen. Der Fehler muss an dieser Routine liegen, da alle anderen Funktionen, die in der Klasse sind erst nachher zum Zug kommen. Und der Fehler entsteht immer erst dann, wenn ich diese Routine verlasse.

Das ganze Projekt besteht mitlerweile aus ca. 10 Units mit je etwa 4000 Programmzeilen. Das sollte für Lazarus doch kein Problem sein.

Nun so funktioniert es jetzt, und somit ist es für mich in Ordnung. Ist aber trotzdem komisch.

Freundliche Grüsse

exc-jdbi

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: [gelöst] Check Url WinInet

Beitrag von MmVisual »

10 Units mit je 4000 Zeilen sind kein Problem. Ich habe ein Projekt mit 50 Units und eine Datei davon hat sogar über 50000 Zeilen. Dazu kommen noch die vielen 100000 Zeilen von Lazarus selbst.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Mathias
Beiträge: 6914
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: [gelöst] Check Url WinInet

Beitrag von Mathias »

Code: Alles auswählen

Das würde ich auch gerne wissen warum. Ist für mich völlig unlogisch.
Kannst du mal den Code-Ausschnitt posten, dort wo du CheckUrl aufrufst. Vielleicht sieht man dort etwas.

So neben bei, hast du beim Debuggen bei Überprüfungen Haken gesetzt ?
Debugger-Info.... muss auch ein Haken sein.

Dann kommt beim Fehler anstelle der Adresse die Zeilen-Nummer im Programm.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

exc-jdbi
Beiträge: 64
Registriert: So 3. Aug 2014, 03:37

Re: [gelöst] Check Url WinInet

Beitrag von exc-jdbi »

Bei Überprüfungen habe ich jetzt die Hacken gesetzt. Bei Info war der Hacken schon gesetzt.

Aufgerufen wird es so

Code: Alles auswählen

 
var iNFile:tIFile;
    sText:string;
begin
  try
    iNFile:=tIFile.Create;
    sText:=iNFile.ReadFile('www.irgendwo.com/einefile.html');
    if sText<>'nil' then
    begin
      {... ... ...}
    end;
  finally
    FreeAndNil(iNFile);
  end;
 
und die Klassenfunktion ist das

Code: Alles auswählen

 
function tIFile.ReadFile(const url: string): string;
var sl:tStringList;
begin
  try
    result:='nil';
    sl:=tStringList.Create;
    if CheckUrl(url) then
      if httpGetText(url,sl) then
        if sl.Count>0 then result:=sl.text;
  finally
    FreeAndNil(sl);
  end;
end; 
 
Freundliche Grüsse

exc-jdbi

Antworten