Einzelnen Beitrag anzeigen

fealXX

Registriert seit: 16. Dez 2007
10 Beiträge
 
#3

Re: Problem mit D2009 und IdFTP

  Alt 26. Jan 2010, 12:49
Zitat von DeddyH:
Zum Einen sollte man dynamisch erzeugte Objekte immer in try-finally einbetten, um Speicherlecks zu vermeiden.
Delphi-Quellcode:
Bla := TBla.Create;
try
  //Mach was mit Bla
finally
  Bla.Free;
end;
Dann greifst Du auf Elemente der Arrays(?) arr1 und arr2 zu, ohne vorher zu prüfen, ob diese überhaupt befüllt sind. Ansonsten zeig uns doch einmal, in welcher Zeile die Exception auftritt.
In welcher Zeile die Exception auftritt weiss ich leider nicht, wie gesagt, unter Windows XP (mein Homerechner, wo ich entwickle) ist der Fehler nicht reproduzierbar, während er unter Win 2003 (Server) auftritt.

Die Try Finally existieren schon, hab nur das aus dem code rauskopiert wo das problem liegen muss.

Kann das an einem Leeren Array liegen das es eine Exception "Lesen von Adresse 00000" auftritt?
Die Explode funktion hab ich hier aus der CodeLibrary wenn ich mich recht erinnere:
Delphi-Quellcode:
function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray;
var
  SepLen: Integer;
  F, P: PChar;
  ALen, Index: Integer;
begin
  SetLength(Result, 0);
  if (S = '') or (Limit < 0) then Exit;
  if Separator = 'then
  begin
    SetLength(Result, 1);
    Result[0] := S;
    Exit;
  end;
  SepLen := Length(Separator);
  ALen := Limit;
  SetLength(Result, ALen);

  Index := 0;
  P := PChar(S);
  while P^ <> #0 do
  begin
    F := P;
    P := AnsiStrPos(P, PChar(Separator));
    if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F);
    if Index >= ALen then
    begin
      Inc(ALen, 5);
      SetLength(Result, ALen);
    end;
    SetString(Result[Index], F, P - F);
    Inc(Index);
    if P^ <> #0 then Inc(P, SepLen);
  end;
  if Index < ALen then SetLength(Result, Index);
end;
  Mit Zitat antworten Zitat