Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bild in TImage --> jpeg-Fehler #52 (https://www.delphipraxis.net/74322-bild-timage-jpeg-fehler-52-a.html)

DGL-luke 1. Aug 2006 13:33

Re: Bild in TImage --> jpeg-Fehler #52
 
ähm ja das mit der suche hab ich auch grad gemerkt....

Du kannst doch mit den Komponenten, mit denen du das Bild lädst (Indy?), sicher die Umleitung abfangen? und wenn die Umleitung auf default.jpg erfolgt, dann lass es halt sein ^^

Un die Checksumme kannst du dopch auch pber deault.jpg machen, oder meinst du, das ändert sich so schnell?

Nisbo 1. Aug 2006 13:36

Re: Bild in TImage --> jpeg-Fehler #52
 
das können ja verschiedene bilder sein, shop a hat default.jpg shop b dann keinbild.jpg usw
das ganze ist ja dynamisch deswegen bräuchte ich da was universelles

ach ja ich nutze indy

DGL-luke 1. Aug 2006 13:44

Re: Bild in TImage --> jpeg-Fehler #52
 
Ok. in Indy sollte es doch ein OnRedirect geben, oder?

Nisbo 1. Aug 2006 13:47

Re: Bild in TImage --> jpeg-Fehler #52
 
stimmt dieser punkt geht an dich :)
stellt sich jetzt nur die frage wie ich das mitten im programm abfragen kann ?

also das muß dann ja da irgendwie rein oder ?

Delphi-Quellcode:
// JPG
          if bildart = 'jpg' then begin
          try
            Form2.Image1.Visible := true;
            form2.image1.Picture.Graphic.LoadFromStream(aStream);
            except
               // showmessage('fehler'); // jpeg-Fehler #52   
               on E: Exception do showmessage('Fehler');

            end;

          end;

DGL-luke 1. Aug 2006 13:53

Re: Bild in TImage --> jpeg-Fehler #52
 
Nein.

Ich weiss nicht, welche Version der Indys hast, und wie dein restlcihe Implementation aussieht, aber du hast folgende Möglcihketien:

- Im OnReconnect den Reconnect abbrechen. Keine Ahnung, was dein IdHTTP1.Get dann zurückliefert.
- Im OnReconnect ein Boolean setzen, nach dem Zurückkerhen des Get Boolean prüfen und falls true ergebnis verwerfen
- Im OnReconnect dem Ding dein eigenes Fehlerbild unterjubeln, ka ob/wie das geht.

Nisbo 1. Aug 2006 13:56

Re: Bild in TImage --> jpeg-Fehler #52
 
mmm asche auf mein haupt, war ne kleine fehlinfo dabei, in dem teil arbeite ich gar nicht mit den indys sondern habe da ne funktion gefunden welche ich an meine bedürfnisse angepasst habe, die ganze funktion schaut so aus eventuell hilft das weiter

Delphi-Quellcode:
function DownloadURL(const aUrl: string; bildart: string): Boolean;
var
  hSession: HINTERNET;
  hService: HINTERNET;
  lpBuffer: array[0..1024 + 1] of Char;
  dwBytesRead: DWORD;
  aStream : TFileStream;
begin
  Result  := False;
  hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    if Assigned(hSession) then begin
      hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, 0, 0);
      if Assigned(hService) then
        try
          aStream := TFileStream.Create('temp_bild'+ ExtractFileExt(aURL), fmCreate);
          while True do begin
            dwBytesRead := 1024;
            InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
            if dwBytesRead = 0 then break;
            lpBuffer[dwBytesRead] := #0;
            aStream.WriteBuffer(lpBuffer, dwBytesRead);
          end;    
          aStream.Position := 0;

          // JPG
          if bildart = 'jpg' then begin
          try
            Form2.Image1.Visible := true;
            form2.image1.Picture.Graphic.LoadFromStream(aStream);
            except
               // showmessage('fehler'); // jpeg-Fehler #52   
               on E: Exception do showmessage('Fehler beim Laden des Artikelbildes');
            end;
          end;

          // Gif
          if bildart = 'gif' then begin
            Form2.Image2.Visible := true;
            form2.image2.Picture.Graphic.LoadFromStream(aStream);
          end;

          Result := True;
        finally
          FreeAndNil(aStream);
          InternetCloseHandle(hService);
        end;
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz