Einzelnen Beitrag anzeigen

gekmihesg
(Gast)

n/a Beiträge
 
#3

Re: Zeiger auf TlistItem wird nil

  Alt 15. Dez 2004, 16:24
na gut

Delphi-Quellcode:
type
  TUser = record
    name: string;
    ip: string;
    status: integer;
    lvp: ^TListItem;
  end;

users: array of TUser;

procedure TForm1.AddUser(user: TUser);
var
  a: TListItem;
  i: integer;
begin
  if IndexByIP(user.ip) <> -1 then
    begin
      UpdateUser(IndexByIp(user.ip),user);
      exit;
    end;

  if IndexByName(user.name) <> -1 then
    begin
      i := 1;
      while IndexByName(user.name + ' (' + inttostr(i) + ')') <> -1 do
        inc(i);
      user.name := user.name + ' (' + inttostr(i) + ')';
    end;

  a := userlv.Items.Add;
  a.Caption := user.name;
  user.lvp := @a; // hier wird die adresse zugewiesen
  setLength(users,length(users)+1);
  users[high(users)] := user;

  if users[high(users)].lvp = nil then // hier nur zum testen. da gehts noch
  showmessage('nil');

  if user.status = stat_away then
    a.ImageIndex := 1
  else
    a.ImageIndex := 0;
end;

procedure TForm1.UpdateUser(index: integer; user: TUser);
begin
  users[index] := user;
  showmessage(users[index].name); // user wird richtig erkannt
// users[index].lv^.Caption := user.name; geht nich
  if users[index].lvp = nil then // gibt true, also der wert is weg
  showmessage('nil');
end;
  Mit Zitat antworten Zitat