Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Gleiche Functionen - verschiedene Werte (https://www.delphipraxis.net/73619-gleiche-functionen-verschiedene-werte.html)

bailey 20. Jul 2006 16:36


Gleiche Functionen - verschiedene Werte
 
Tach an alle,
ich habe ein Problem, wo ich keine logische Erklärung weiter finde.
Es sind zwei fast gleiche Funktionen (Array of Array) nur ist der Wert leesbar in der Zweiten
funktion...!?
ich habe zwei Typen
Delphi-Quellcode:
TDFile  = record
                      MD5             :  String[40];
                      Size           :  int64;
                      FileName       :  String[255];
                      From           :  TList;     //TKontakt
                      LastByte       :  integer;   // der Letzte byte beim letzten Download.
                      StatusQueue    :  integer;
                      StatusCount    :  integer;
                      StatusDownlaod :  string;
                      StatusStucke   :  array of string;

Den Status in diesem Typ kann ich in der einen Funktion nicht sehen.
Delphi-Quellcode:
TKontakt   = record
                      Thread         :  TClientThread;
                      Verbindung     :  TidTCPClient;
                      UserName       :  string;
                      IP             :  String;
                      Port           :  Integer;
                      Status         :  integer;
                      Stuck          :  integer;
                      ByteAnfang     :  integer;
                      ByteEnde       :  integer;
                    //  LastByte       :  int64;
                    end;
jetzt die Funktion wo ich den Wert nicht lesen kann - soweit ich das sehen kann zeit der Zeiger nicht auf denn richtigen Platz
Der wert TKontakt(TDfile(download.Items[i]^).From.Items[n]^).Status scheint nicht zugewiesen zu sein, ob wohl er davor zugewiesen wurde..!!!

Delphi-Quellcode:
function TClientClass.FGetFreeTKontakt(Datei: TDfile): integer;
var
    i, n, t   :    integer;
 begin
    // result  := 0;
     t       := 0;
     for i:=0 to download.Count -1 do
        begin
        if TDfile(download.Items[i]^).MD5 = Datei.md5 then
           begin
           for n:=0 to TDfile(download.Items[i]^).From.Count - 1 do
               begin
               if TKontakt(TDfile(download.Items[i]^).From.Items[n]^).Status = FrischUndSauber then
                        begin
                        t := t+1;
                        end; // if
                   end; // for
                end; // if
       end; //
       result := t;
end;
Gleich danach kommt die Funktion wo der wert leesbar ist und wo alles super funktioniert.



und hier kann ich den wert TKontakt(TDfile(download.Items[i]^).From.Items[n]^).Status super lesen
Delphi-Quellcode:
function TClientClass.PBeginDownloadFile(Datei: TDFile; Stuck : integer): boolean;
var

     i, n            : Integer;
     Iwert           : integer;
     Swert           : string;
     Connected       : boolean;
begin
   result  := false;
   //Starten der Verbindung zum jeder IP
   for i:=0 to download.Count -1 do
        begin
        if TDfile(download.Items[i]^).MD5 = Datei.md5 then
           begin
           for n:=0 to TDfile(download.Items[i]^).From.Count - 1 do
               begin
               if TKontakt(TDfile(download.Items[i]^).From.Items[n]^).Status = FrischUndSauber then
                    begin

kann mir jemmand sagen was ich übersehen habe...!?!? bzw. wo der Fehler sitzen könte..

glkgereon 20. Jul 2006 16:40

Re: Gleiche Functionen - verschiedene Werte
 
Dadran liegt es (behaupte ich mal ganz dreist :-D )wohl nicht.

wie und wo rufst du die denn auf? (Code?)

bailey 20. Jul 2006 16:50

Re: Gleiche Functionen - verschiedene Werte
 
Es ist ganz komisch, ich habe die Proceduren mit plätzen getauscht, keine Reaktion, in der einen Kann ich den Wert lesen in der Anderen nicht..

Die Funktionen Werden im OnTimer aufgerufen
Delphi-Quellcode:
TempFile := TDfile(Download.Items[i]^);
if (Downloads.FGetFreeTKontakt(TempFile) <> 0)
AND  (Downloads.FGetFreeStuck(TempFile) <> 999999999) then
       begin
       Downloads.PBeginDownloadFile(TempFile, Downloads.FGetFreeStuck(TempFile);
       end;
Wenn ich auch TDfile(Download.Items[i]^) anstatt TempFile benutze mach es kein Unterschied


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr.

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