Entwickler-Ecke

Internet / Netzwerk - idAntiFreeze Zugriffsverletzung


Dude566 - Di 12.05.09 17:10
Titel: idAntiFreeze Zugriffsverletzung
Also ich habe in meinem FTP CLient jetzt die AntiFreeze Komponente von Indy einbauen wollen damit das Formular nicht hängt während eines Down- und Uploads.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
private
  MyFTP : TIdFTP;
  AntiFreeze : TIdAntiFreeze;

// On Create
procedure TForm1.FormCreate(Sender: TObject);
begin
     MyFTP := TIdFTP.Create(Self);
     AntiFreeze := TIdAntiFreeze(Self);
     AntiFreeze.Active := true;
     AntiFreeze.OnlyWhenIdle := false;
end;


Beim kompilieren bekomme ich die Fehlermeldung " Zugriffsverletzung in blabla...".

Dann öffnet sich Projekt1:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


Das Highlight sieht in Delphi dann blau aus.

Was is das? Das vor der Komponente nicht so.

Gruß Dude566


Narses - Di 12.05.09 17:54

Moin!

Das IdAntiFreeze-Zeuchs ist Schrott, pack den Up-/Download in einen Thread, fertig. :idea:

cu
Narses


Xentar - Di 12.05.09 18:25

1. Bekommst du die Zugriffsverletzung nicht beim kompilieren - sondern beim starten..
2. Du hast das nicht wirklich SO da stehen, oder?

Delphi-Quelltext
1:
AntiFreeze := TIdAntiFreeze(Self);                    

Damit versuchst du gerade, das Formular (self) als IdAntiFreeze Komponente anzusprechen.. kein Wunder dass das nicht geht.
3. Wie Narses schon sagte, ist nen eigener Thread noch am schönsten.


Dude566 - Di 12.05.09 20:45

Wie geht das mit eigenen Threads bzw. was ist das?

Vielleicht einen Link zu einem Beispiel?

Edit: Hatte .Create vergessen

Delphi-Quelltext
1:
AntiFreeze := TIdAntiFreeze.Create(self);                    


Xentar - Di 12.05.09 20:56

Such mal nach TThread, da sollten sich genug Beispiele finden. Soweit ich weiß ist sogar bei Delphi eien Demo dabei.

Geht das nun, mit dem Create?


Dude566 - Di 12.05.09 21:07

Ja, nun klappt es.

Auch wenn es ein wenig lahm reagiert, so bleibt es wenigstens nicht komplett hängen wie ohne AntiFreeze.