"internal_loop" ist eine globale integervariabel
danke erstmal für die hilfe, nun bin ich schon nen schritt weiter
allerdings funktioniert das ganze jetzt nicht (keine fehlerausgabe)
habe schon ein ShowMessage('test!');// eingebaut und auch das wird nicht angezeigt
hier die Unit3 mit dem Thread:
Delphi-Quellcode:
unit Unit3;
interface
uses Classes,clipbrd,SysUtils,Dialogs;
type
bildupdate =
class(TThread)
private
{ Private-Deklarationen }
protected
procedure Execute;
override;
end;
implementation
uses Unit1;
procedure bildupdate.Execute;
begin
ShowMessage('
test!');
if internal_loop = 0
then
begin
DestFile := ExtractFilePath(ParamStr(0)) + '
temp.jpg';
Form1.Image1.Picture :=
nil;
stream := TFileStream.Create(DestFile, fmCreate);
try
Form1.IdHTTP1.Get(SourceFile, stream);
except
Form1.Timer2.Enabled := false;
ShowMessage('
Verbindungsfehler!');
end;
stream.Free;
if Form1.Timer2.Enabled
then Form1.Image1.Picture.LoadFromFile(PChar(DestFile));
end
else
begin
// Lokal --> nicht über Internet Synchronize-Methode
Form1.AviCap.CopyToClipboard;
Form1.Image1.picture :=
nil;
Form1.Image1.Picture.Bitmap.Assign(Clipboard);
end;
end;
end.
also Unit1 ist jetzt in den implementationen drinn und die Formularfelder wie Image1 spreche ich mit Form1.Image1 an (hoffe das ist so richtig)
die Prozedur in der Unit1 schaut jetzzt so aus:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var Thread: bildupdate;
begin
if dieurl = '' then exit else SourceFile := dieurl;
if dieurl = '' then exit;
if Timer2.Enabled = false then Timer2.Enabled := True;
ToolButton9.Enabled := true;
ToolButton10.Enabled := true;
// Thread-Bereich
Thread := bildupdate.Create(true);
Thread.FreeOnTerminate := True;
end;
die beiden vars:
var SourceFile, DestFile : string;
var stream: TFileStream;
mußte ich auch global definieren
Wo könnte jetzt der Fehler liegen ?
Also außer zwischen meinen Ohren