![]() |
|
|
#16
|
|||
|
|||
|
Вот здесь я добавляю.
Код:
while Pos('<user>',answer)<>0 do
begin
tempuser.uid:=Pars('uid',answer);
tempuser.fname:=Pars('first_name',answer);
tempuser.lname:=Pars('last_name',answer);
tempuser.online:=StrToInt(Pars('online',answer));
memo1.Lines.Add('added user='+tempuser.fname+' '+tempuser.lname);
memo1.Lines.Add('online='+IntToStr(tempuser.online));
if copy(Pars('photo_rec',answer),Length(Pars('photo_rec',answer))-3,4)='.jpg' then
begin
try
gethttp.Get(Pars('photo_rec',answer), ms);
ms.Position := 0;
jpeg := TJPEGImage.Create;
jpeg.LoadFromStream(ms);
tempuser.photo:=TBitmap.Create;
tempuser.photo.Assign(jpeg);
jpeg.Free;
finally
ms.Clear;
end;
end;
Friends.AddObject(tempuser.uid,tempuser);
delete(answer,1,Pos('</user>',answer));
end; |
|
#17
|
|||
|
|||
|
По поводу того, что мешает: Разве инициализация не нужна?
|
|
#18
|
||||
|
||||
|
Цитата:
Код:
tempuser := TUser.Create; |
|
#19
|
|||
|
|||
|
Это же лишнее по твоим словам?
|
|
#20
|
||||
|
||||
|
Цитата:
Код:
SelUser:=TUser.Create; // Здесь ты создаёшь объект и ссылку на него присваиваешь переменной SelUser
for i := 0 to friends.Count-1 do
begin
if friends.Objects[i]=nil then memo1.Lines.Add('nil');
SelUser:=TUser(TObject(friends.Objects[i])); // А здесь ты забываешь ссылку на объект который создал выше и присваиваешь переменной SelUser ссылку на другой объектЦитата:
|
|
#21
|
|||
|
|||
|
После добавления не выдает ничего:
Код:
messagebox(handle,PChar(TUser(friends.Objects[0]).fname),'',mb_ok); |
|
#22
|
||||
|
||||
|
Цитата:
|
|
#23
|
|||
|
|||
|
Я выкладывал:
Код:
while Pos('<user>',answer)<>0 do
begin
tempuser:=TUser.create;
tempuser.uid:=Pars('uid',answer);
tempuser.fname:=Pars('first_name',answer);
tempuser.lname:=Pars('last_name',answer);
tempuser.online:=StrToInt(Pars('online',answer));
memo1.Lines.Add('added user='+tempuser.fname+' '+tempuser.lname);
memo1.Lines.Add('online='+IntToStr(tempuser.online));
if copy(Pars('photo_rec',answer),Length(Pars('photo_rec',answer))-3,4)='.jpg' then
begin
try
gethttp.Get(Pars('photo_rec',answer), ms);
ms.Position := 0;
jpeg := TJPEGImage.Create;
jpeg.LoadFromStream(ms);
tempuser.photo:=TBitmap.Create;
tempuser.photo.Assign(jpeg);
jpeg.Free;
finally
ms.Clear;
end;
end;
Friends.AddObject(tempuser.uid,tempuser);
tempuser.Free;
delete(answer,1,Pos('</user>',answer));
end;
ms.Free;gethttp.Free;С БД Access всё работало |
|
#24
|
||||
|
||||
|
Смотри.
При создании формы создаю 10 пользователей Код:
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
friends := TStringList.Create;
for i := 1 to 10 do
begin
tempuser := TUser.Create;
tempuser.uid := IntToStr(i);
tempuser.fname := 'first_name' + IntToStr(i);
tempuser.lname := 'last_name' + IntToStr(i);
tempuser.online := online;
Friends.AddObject(tempuser.uid, tempuser);
end;
end;При нажатии на кнопку Button1 добавляю их в ListBox1: Код:
procedure TForm1.Button1Click(Sender: TObject);
var
SelUser: TUser;
i: Integer;
begin
lb_users.Items.BeginUpdate;
lb_users.Clear;
Memo1.Lines.Add('count=' + IntToStr(friends.Count));
for i := 0 to friends.Count - 1 do
begin
if friends.Objects[i] = nil then
begin
memo1.Lines.Add('nil');
end else
begin
SelUser := TUser(friends.Objects[i]);
memo1.Lines.Add(SelUser.fname + ' ' + SelUser.lname);
memo1.Lines.Add('online=' + Inttostr(SelUser.online));
if SelUser.online = online then
begin
lb_users.AddItem(SelUser.fname + ' ' + SelUser.lname,
TObject(StrToInt(SelUser.uid)));
memo1.Lines.Add('i=' + Inttostr(i) + ' user=' + SelUser.fname + ' ' + SelUser.lname);
end;
end;
end;
lb_users.Items.EndUpdate;
end; |
|
#25
|
||||
|
||||
|
Цитата:
|
|
#26
|
|||
|
|||
|
Вот где собака сидела. Виноват. Просто напросто запутался
|
|
#27
|
|||
|
|||
|
Для обработки текста в формате JSON пользуюсь всем известным классом TlkJSON.
При долгой работе моей программы в этой функции выскакивает ошибка access violation: Код:
function TlkJSONobject.IndexOfName(const aname: WideString): Integer;
var
mth: TlkJSONobjectmethod;
i: Integer;
begin
if not FUseHash then //ВОТ ЗДЕСЬ ОШИБКА
begin
result := -1;
for i := 0 to Count - 1 do
begin
// mth := TlkJSONobjectmethod(FValue[i]);
mth := TlkJSONobjectmethod(fList.Items[i]);
if mth.Name = aname then
begin
result := i;
break;
end;
end;
end
else
begin
result := ht.IndexOf(aname);
end;
end; |
|
#28
|
||||
|
||||
|
Цитата:
Цитата:
Тебе нужно более строго следить за созданием и уничтожением объектов и "access vialation" будет очень редкой ошибкой. |
|
#29
|
|||
|
|||
|
хм..Была бы ошибка тогда в моем модуле, разве нет?
|
|
#30
|
||||
|
||||
|
Цитата:
|