Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Zugriffsverletzung Thread/IdPOP3 (https://www.delphipraxis.net/14082-zugriffsverletzung-thread-idpop3.html)

Meflin 1. Jan 2004 20:06


Zugriffsverletzung Thread/IdPOP3
 
Hi,
folgender code, der als thread ausgeführt wird, erzeugt einen fehler lesen von adresse 00000000
Delphi-Quellcode:
function testthread(p: pointer): LongInt;
var my_idle: integer;
    pwtotest: string;
begin
  my_idle := integer(p^);
  with form1 do begin

    if test_typ = 'pop3' then begin
      basepop3 := TIdPOP3.Create(form1);
      with basepop3 do begin
        name := 'pop3_'+inttostr(my_idle);
        host := 'host';
        username := 'username';
        parent := form1;
      end;
    end;

    with TListBox(FindComponent('buffer_'+inttostr(my_idle))) do begin
      while items.Count > 0 do begin

        pwtotest := items[0];
        items.Delete(0);

        if test_typ = 'pop3' then begin
          with TIdPOP3(FindComponent('pop3_'+inttostr(my_idle))) do begin
            try
              [color=red]password := 'test';[/color]
              [color=red]connect;[/color]
              form1.donegauge.Progress := form1.donegauge.Progress + 1;
            except
              form1.donegauge.Progress := form1.donegauge.Progress + 1;
            end;
          end;
        end;
      end;
    end;
  end;
  result := 0;
end;
und zwar in den rot markierten zeilen. woran könnte das liegen?

moritz 1. Jan 2004 20:52

Re: Zugriffsverletzung Thread/IdPOP3
 
Wahrscheinlich wird es das in
Delphi-Quellcode:
with TIdPOP3(FindComponent('pop3_'+inttostr(my_idle))) do begin
gesuchte Element nicht geben.

Meflin 1. Jan 2004 21:12

Re: Zugriffsverletzung Thread/IdPOP3
 
aber das wird doch n paar zeilen darüber erstellt :?

Duffy 1. Jan 2004 21:46

Re: Zugriffsverletzung Thread/IdPOP3
 
Hallo Meflin,
Zitat:

Zitat von Onz
Wahrscheinlich wird es das in
Delphi-Quellcode:
with TIdPOP3(FindComponent('pop3_'+inttostr(my_idle))) do begin
gesuchte Element nicht geben.

Ich denke Onz hat Recht.

mach Dir doch eine Variable vom Typ TComponent und weise der das Ergebnis von
Delphi-Quellcode:
var
  MyComponent: TComponent;
begin
  MyComponent := FindComponent('pop3_'+inttostr(my_idle));
end;
dann brauchst Du noch abfragen
Delphi-Quellcode:
if MyComponent = nil then
  ShowMessage('Bingo .. voll daneben gegriffen ...');
bye
Claus

Meflin 2. Jan 2004 12:15

Re: Zugriffsverletzung Thread/IdPOP3
 
ok, es scheint tatsächlich nicht zu existieren!
aber was stimmt mit der erzeugung nicht?

scp 2. Jan 2004 12:47

Re: Zugriffsverletzung Thread/IdPOP3
 
Zitat:

Zitat von Meflin
ok, es scheint tatsächlich nicht zu existieren!
aber was stimmt mit der erzeugung nicht?

Du hast weiter oben
Delphi-Quellcode:
with TListBox(FindComponent('buffer_'+inttostr(my_idle))) do begin
stehen. Das bedeutet, er benutzt dann beim zweiten FindComponent() die Prozedur von der ListBox und nicht die vom Form.
Tesete mal:
Delphi-Quellcode:
MyComponent := Form1.FindComponent('pop3_'+inttostr(my_idle));

Meflin 2. Jan 2004 14:47

Re: Zugriffsverletzung Thread/IdPOP3
 
das wars!
thx!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:07 Uhr.

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