Delphi Idhhtp.post Uplaod Problem
lima-city → Forum → Programmiersprachen → Delphi & Pascal
ausprobieren
benutzung
bild
code
datei
fehlermeldung
frage
glauben
http
kamera
konflikt
kopie
lade
passieren
problem
programm
sekunde
spekulieren
url
zugriff
-
Hallo, ich habe da ein Problem mit delphi7
ich lade Per Idhhtp.post ein bild von einer Webcam alle 3 Sekunden auf meinen webspace. nach ca. 100 upload kommt immer eine Fehlermeldung das das bild was ich hochladen will in benutzung ist. so als wäre der speicher voll von dem delphi programm.
ich kann es leider schwer erklären was ich genau will aber ich hoffe auf hilfe.
viele grüße. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ohne den genaueren Code zu kennen kann man natürlich nur spekulieren. Ich vermute einfach mal, dass du das Webcam-Bild immer lokal erstellst und überschreibst. Wenn das Bild gerade erst erstellt wird, du es aber bereits hochladen möchtest, ist der Zugriff auf diese Datei natürlich noch "in Benutzung".
-
Blöde Frage, aber wie kriegst du das mit den 3 Sekunden überhaupt gebacken? Mit einer Timer-Komponente? Deren "Auflösung" ist nämlich nicht die tollste, und das würde erklären, warum nach mehrere Durchläufen / Arbeitsgängen das ganze in die Hose geht, weil es mit einem Zugriff der Kamera kollidiert.
Ich würde in dem Fall jedenfalls erst checken, ob die Datei benützt wird:
http://www.scalabium.com/faq/dct0066.htm
http://delphi.about.com/od/delphitips2009/qt/is-file-in-use.htm
und es ansonsten 1 Sekunde danach wieder versuchen. -
@burgi: Also wie du schon dachtest mache ich das mit den 3 sekunden mit einem Timer.
dein Tipp mit dem schauen ob die Datei grad verwendet wird ist goldwert keine ahnung wieso ich da nicht draufgekommen bin.
ich werde es gleich ausprobieren ob es was bringt.
@trueweb: Ich lasse von meinem Programm das Bild auf der festplatte speichern und in der gleichen procedure wird es dann hochgeladen. Ich glaube leider nicht wirklich das euch der Code was helfen wird da ich ihn sehr durcheinander geschrieben habe und nicht kommentiert.
Was mir gerade noch eingefallen ist, Ich könnte ja die datei die ich gespeichert habe erst nocheinmal kopieren und dann die kopie hochladen auch wenn ich glaube das es dann auch irgendwann passieren wird. nur etwas später.
Einmal eine andere frage gibt es vielleicht eine möglichkeit das wenn diese fehlermeldung auftaucht das sich das programm von selbt neu startet und somit wieder von forne anfäng?
Mit ApplicationsEvents habe ich zumindest schonmal die fehlermeldung abgefangen das sie nicht mehr auftaucht.
Da es mit Try, Except nicht geklappt hate und sie Trotzdem auftauchte. -
Evtl. bringt es auch schon etwas, den Timer temporär auszuschalten. Sonst kann es passieren, dass er sich irgendwann selbst überholt.
procedure TDeinForm.Timer1Timer(Sender: TObject); begin Timer1.Enabled := false; try ArbeiteGanzHeftig; finally Timer1.Enabled := true; end; end;
-
deddyh schrieb:
Evtl. bringt es auch schon etwas, den Timer temporär auszuschalten. Sonst kann es passieren, dass er sich irgendwann selbst überholt.
Das ist durchaus eine Möglichkeit, jedoch sich alleine auf den Timer zu verlassen wird nach einer gewissen Laufzeit immer wieder zu Konflikten mit der Webcam führen. Er weiß ja nicht, ob die Datei durch das eigene Programm in Verwendung ist, und deswegen die Exception geworfen wird, oder ob das Webcam-Programm die Datei verwendet. Den Timer zu deaktivieren und wieder zu aktivieren löst also das Problem als einzelne Massnahme sicher nicht, da der Timer vom Delphi-Programm mit dem des Webcam-Programms niemals 100% syncron laufen werden / können. -
So war das ja auch nicht gemeint. Man muss sich schon nach allen Seiten absichern. Ich wollte nur darauf hinweisen, dass es im blödesten Fall bei langen Operationen dazu kommen kann, dass das nächste Timer-Event gefeuert wird, bevor das vorherige fertig ist.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage