Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Record mit dyn. Strings duplizieren

  Alt 6. Okt 2008, 13:11
Hier mal bisschen Code:

Delphi-Quellcode:
function IntGetBuddyList(var List: TdxICQBuddyList; ItemType: Word): Integer;
var
  I, J: Integer;
begin
  FreeBuddyList(List);
  for I := low(FSSIList) to high(FSSIList) do
  begin
    if (FSSIList[I].ItemType = ItemType) then
    begin
      SetLength(List, Length(List) + 1);
      ClearBuddyInfo(List[high(List)]);
      if (ItemType = SSI_BUDDY) then
      begin
        J := GetOnlineBuddy(FSSIList[I].ItemName);
        if (J <> -1) then
        begin
          List[high(List)] := FOnlineList[J];
        end;
      end;
      List[high(List)].General.UIN := FSSIList[I].ItemName;
      List[high(List)].SSIInfo.ItemID := FSSIList[I].ItemID;
      List[high(List)].SSIInfo.GroupID := FSSIList[I].GroupID;
      FillBuddyInfo(List[high(List)], FSSIList[I].TLVList);
    end;
  end;
  Result := Length(List);
end;
Beim ersten Mal wenn ich diese Funktion aufrufe funktioniert alles perfekt wie gewünscht. Beim zweiten mal aber bekomme ich eine EInvalidPointer Exception, aber die komischerweise erst nach Result := Length(List). Die Strings in den Records der Liste sind korrekt. Auch die Strings in den Records von FOnlineList stimmen noch.
  Mit Zitat antworten Zitat