Entwickler-Ecke

Internet / Netzwerk - Bild alle Sekunde von Webseite laden ohne es zu speichern...


Sniky - Mo 21.04.08 15:24
Titel: Bild alle Sekunde von Webseite laden ohne es zu speichern...
Hallo Ihr Lieben,

ich hab da mal eine Frage, ist es irgend wie möglich ein und das gleiche Bild immer wieder von einer Webseite in Delphi anzuzeigen ohne es zu cachen?

Mal zur Erklärung.

Wir haben hier eine WebCam auf einer Seite zu laufen und diese zeigt ja nun alle paar Sekunden ein Bild an. Wo dieses Bild her kommt (also den Link zum Bild kenn ich ja auch, ist aber immer der selbe, also z.B. http://www.meine-seite.de/webcam.jpg)

So nun wollen wir gerne bei einem Kinderfest oder so für die Eltern der Kinder die auf der WebCam zu sehen sind ein kleies Programm starten, welches dann alle Sekunde dieses Bild läd. Am schönsten wäre natürlich wenn es mit dem alten überblendet werden würde. Wichtig wäre auch noch, es vielleicht so zu machen, das wenn er kein neues Bild findet das alte so lange anzeigt bis ein neues angezeigt werden kann oder ebend angezeigt wird, das keine Bilder mehr verfügbar sind... Da ja irgend wann nach einem Kinderfest oder so die Cam abgeschaltet wird.

Könntet ihr wir da vielleicht irgend wie helfen das zu realisieren?

Vielen Dank schon mal im vorraus für das lesen meines Beitrags und nun hoffe ich wirklich sehr auf eure hilfe... Ich muß noch dazu sagen, dass ich nicht besonders viel ahnung von delphi habe und hier mit der Enterprise version 6 arbeite.

Vielen Dank und Liebe Grüße,
Sniky


Moderiert von user profile iconChristian S.: Topic aus Sonstiges (Delphi) verschoben am Mo 21.04.2008 um 16:24


Chryzler - Mo 21.04.08 16:01

Sollte ned schwer sein. Such mal im Forum wie man Dateien runterlädt, mit der Indykomponente gehts warscheinlich am einfachsten (wobei ich mir nicht sicher bin ob es Indy für Delphi 6 gibt). Dazu noch nen Timer - fertig. ;)


Sniky - Mo 21.04.08 16:19

user profile iconChryzler hat folgendes geschrieben:
Sollte ned schwer sein. Such mal im Forum wie man Dateien runterlädt, mit der Indykomponente gehts warscheinlich am einfachsten (wobei ich mir nicht sicher bin ob es Indy für Delphi 6 gibt). Dazu noch nen Timer - fertig. ;)



Ja sind dabei... nur weiß ich jetzt trotzdem nicht so genau wie ich das machen könnte :( ich such aber auch schon die ganze zeit hier im forum... ich werd mal jetzt noch mal nach indy suchen, vielleicht find ich ja da was passendes.

Danke...

Viele Grüße,
Sniky


jaenicke - Mo 21.04.08 16:22

Es gibt UrlDownloadToFile, das benutzt soweit ich weiß allerdings den Cache des IE, insofern weiß ich nicht, ob es da Probleme geben könnte. Auf jeden Fall wäre es eine sehr einfache Lösung.

Herunterladen in ein temporäres Verzeichnis und das Bild ins Programm laden.


Sniky - Mo 21.04.08 16:26

user profile iconjaenicke hat folgendes geschrieben:
Es gibt UrlDownloadToFile, das benutzt soweit ich weiß allerdings den Cache des IE, insofern weiß ich nicht, ob es da Probleme geben könnte. Auf jeden Fall wäre es eine sehr einfache Lösung.

Herunterladen in ein temporäres Verzeichnis und das Bild ins Programm laden.



oder gibt es irgend wie eine möglichkeit eine php datei in der ein kleines javaScript läuft in delphi rein zu laden? das wäre mir ja fast noch viel viel lierber :D


Fighter#1 - Mo 21.04.08 18:34

Wenn du es nicht über den Dateiweg machen möchtest musst du es runterstreamen ... dh, du brauchst einen Stream, mit dem du die einzelnen Zeichen in eine Streamvariable lädst und diese lädst du mit Image blabla .picture.loadfromstream(mystream) ... wie du den Stream hinkriegst weiß ich nich =/ ... könntest nen HTTP Request an den Server schicken in dem du die Bilddatei forderst und dann halt das was du zurückkriegst eben in den stream tust.
klar soweit?


Jakob_Ullmann - Mo 21.04.08 18:58

Wenn du ein Bild PRO SEKUNDE von einer Website laden willst, wirst du denke ich nicht viel mehr außer ein Flackern zu sehen bekommen...


jaenicke - Mo 21.04.08 20:03

Du kannst auch den TWebBrowser benutzen. Darin kannst du eine Webseite wie im IE anzeigen.


Sniky - Mo 21.04.08 20:38

user profile iconjaenicke hat folgendes geschrieben:
Du kannst auch den TWebBrowser benutzen. Darin kannst du eine Webseite wie im IE anzeigen.


Ja das will ich machen, danach such ich schon den ganzen tag... ich find aber leider kein ganz kurzes beispiel wo wirklich nur eine seite eingeladen wird (z.B: http://www.meineseite.de/bilder.php) mehr will ich ja gar nicht... ich hab zwar schon ein paar quellcode gefunden, wenn ich die dann aber in ein neues delphi formular kopiere lief das bis jetzt noch nie... mir würde wirklich so eine *.dfm datei, die ich dann mit einbauen kann reichen... aber man findet sowas wirklich nirgens... könnte mir jemand vielleicht sowas machen?

EDIT: in bilder.php würde dann ein Ajax Script die Bilder alle Sekunde anzeigen... das hätte ich dann auch schon fertig und hoffe das wäre kein Problem?

es soll auch wirklich nichts weiter können, nur ein kleines fenster wo eine seite eingeladen wird... mehr nicht.

Vielen Dank für eure mühe!

Liebe Grüße,
Sniky


jaenicke - Mo 21.04.08 20:41

1. TWebBrowser aufs Formular.
2. WebBrowser1.Navigate mit der Adresse als Parameter aufrufen.
3. Freuen :D.

Mehr zu dem Thema:
http://dn.codegear.com/article/27843
bzw.
http://forum.delphi-treff.de/showthread.php?t=4791#2


FinnO - Mo 21.04.08 20:42

? du packst ins Create ereigness von deinem Form einfach


Delphi-Quelltext
1:
2:
3:
begin
  MyBrowser.Navigate('www.Meineurl.de/MeinBild.jpg');
end;


fertich

€ wieder schneller :(


Sniky - Mo 21.04.08 20:50

user profile iconFinnO hat folgendes geschrieben:
? du packst ins Create ereigness von deinem Form einfach


Delphi-Quelltext
1:
2:
3:
begin
  MyBrowser.Navigate('www.Meineurl.de/MeinBild.jpg');
end;


fertich

€ wieder schneller :(



das ist bestimmt so einfach wie du da schreibst... aber für jemanden der das noch nie gemacht hat wohl ehr weniger :oops:

so sieht meine Datei aus nach dem ich eine erstellt habe und einen TWebBrowser mit rein packe und wo pack ich jetzt deinen code hin, damit das auch mal funktioniert? :D


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.



ich hab echt gar keine ahnung... vielen dank noch mal für deine mühe.


Liebe Grüße,
Sniky

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


bflegel - Mo 21.04.08 21:10

Hallo Sniky,

was FinnO meinte:

Im ObjektInspektor wählst Du Deine Form aus, gehst auf die Ereignisse. Dort ist ein "OnCreate". Doppelklick darauf und Du kannst den Text von FinnO eingeben.

bye
bflegel

//Edit: Bzw. wenn Dein Webbrowser "WebBrowser1" heißt, muss es natürlich heißen:


Delphi-Quelltext
1:
2:
3:
begin
  WebBrowser1.Navigate('www.Meineurl.de/MeinBild.jpg');
end;


Sniky - Mo 21.04.08 21:17

user profile iconbflegel hat folgendes geschrieben:
Hallo Sniky,

was FinnO meinte:

Im ObjektInspektor wählst Du Deine Form aus, gehst auf die Ereignisse. Dort ist ein "OnCreate". Doppelklick darauf und Du kannst den Text von FinnO eingeben.

bye
bflegel

//Edit: Bzw. wenn Dein Webbrowser "WebBrowser1" heißt, muss es natürlich heißen:


Delphi-Quelltext
1:
2:
3:
begin
  WebBrowser1.Navigate('www.Meineurl.de/MeinBild.jpg');
end;


Das ist ja ebend mein Problem, klicke ich jetzt 2 mal auf dieses weiße felt was ja der TWebBrowser ist, kommt folgende Meldung:

No property pages are available for this control


und ein OnCreate find ich auch nirgens :oops:

ich glaub ich bin für delphi echt nicht gemacht :cry:

kannst du mir da bitte noch mal helfen?

Vielen Dank!

Liebe Grüße,
Sniky


Sniky - Mo 21.04.08 21:23

Hat sich erledigt, habs hin bekommen vielen dank an euch beide!

Liebe Grüße,
Sniky

Moderiert von user profile iconNarses: Zitat entfernt


bflegel - Mo 21.04.08 21:25

Klicke nicht auf das weiße Feld des Webbrowsers, sondern auf die Form (das Fenster, welches sich als erstes geöffnet hat, als Du Delphi gestartet hast)!

Links im ObjektInspektor steht dann "Form1: TForm1"

Darunter hast Du 2 Reiter:

Eigenschaften | Ereignisse

Klicke auf Ereignisse. Dann siehst Du "OnCreate". Doppel-klicke auf das Feld rechts neben "OnCreate" und trage den Befehl ein.

bye
bflegel

//Edit:

Hmmmm - dann war ich zu langsam 8)


Sniky - Mo 21.04.08 21:32

user profile iconbflegel hat folgendes geschrieben:
Klicke nicht auf das weiße Feld des Webbrowsers, sondern auf die Form (das Fenster, welches sich als erstes geöffnet hat, als Du Delphi gestartet hast)!

Links im ObjektInspektor steht dann "Form1: TForm1"

Darunter hast Du 2 Reiter:

Eigenschaften | Ereignisse

Klicke auf Ereignisse. Dann siehst Du "OnCreate". Doppel-klicke auf das Feld rechts neben "OnCreate" und trage den Befehl ein.

bye
bflegel

//Edit:

Hmmmm - dann war ich zu langsam 8)


ja aber trotzdem danke... vielleicht kannst du mir ja gleich noch mal helfen, kann ich bei dem webbrowser den scrollbalken komplett weg machen? also auch den rechten srollbalken? den brauch ich eigentlich nicht, scrollen soll da keiner :)

Vielen Dank noch mal.

Liebe Grüße,
Sniky


bflegel - Mo 21.04.08 21:40

Auf "konventionellem" Wege über Eigenschaften anscheinend nicht. Ob es andere Möglichkeiten gibt weiss ich leider nicht.

bye
bflegel


Sniky - Mo 21.04.08 21:42

user profile iconbflegel hat folgendes geschrieben:
Auf "konventionellem" Wege über Eigenschaften anscheinend nicht. Ob es andere Möglichkeiten gibt weiss ich leider nicht.

bye
bflegel



oje, na ok trotzdem Danke :)... vielleicht weiß es ja jemand anderes?


Yogu - Mo 21.04.08 21:46

user profile iconSniky hat folgendes geschrieben:
kann ich bei dem webbrowser den scrollbalken komplett weg machen?

Ich glaube, das geht irgendwie mit JavaScript. Vielleicht hilft dir SelfHTML [http://www.selfhtml.org] weiter.


Sniky - Mo 21.04.08 22:55

user profile iconYogu hat folgendes geschrieben:
user profile iconSniky hat folgendes geschrieben:
kann ich bei dem webbrowser den scrollbalken komplett weg machen?

Ich glaube, das geht irgendwie mit JavaScript. Vielleicht hilft dir SelfHTML [http://www.selfhtml.org] weiter.


stimmt wohl, der weg kann doch so einfach sein im body einfach ein scroll="no" und weg ist er :D

Danke noch mal an alle!

Liebe Grüße,
Sniky