Считывание объявлений

Здесь обсуждаются технические аспекты создания дополнений.
Аватара пользователя
leonbratsk
Сообщения: 488
Зарегистрирован: 14:07, 21.03.2010

Re: Считывание объявлений

Сообщение leonbratsk » 08:00, 22.04.2012

И еще как можно сделать ссылку к объявлению, зная ID?
[url=/bboard: 2ba272eb]Продам Samsung gt-s5230[/url]

Тут не ID объявления.. а что-то другое..
Чат CommFort города Братск "SkyLine"
адрес: vcommforte.com или 194.146.200.130
версия сервера: 5.40

Maxim Mirgorodsky
Администратор
Сообщения: 6730
Зарегистрирован: 09:56, 27.06.2005
Благодарил (а): 1 раз

Re: Считывание объявлений

Сообщение Maxim Mirgorodsky » 09:10, 22.04.2012

Это ID, только в 16-ричном виде (HEX).

Аватара пользователя
leonbratsk
Сообщения: 488
Зарегистрирован: 14:07, 21.03.2010

Re: Считывание объявлений

Сообщение leonbratsk » 09:35, 22.04.2012

Maxim Mirgorodsky писал(а):Это ID, только в 16-ричном виде (HEX).

fTextToAnsiString(IntToHex(cID,0))
Пробовал. Пишет "Объявление не найдено."
Пробовал так же через калькулятор вручную переводить, имеет ли значение регистор?

И второй момент, который я заметил недавно.
Удаление объявления
ID: 1102
Блок данных: число(ID объявления)

Зачем получать ID, если его уже не существует? Могли бы хоть информацию прикрепить какую-нибудь. Допустим нужно было узнать какое объявление было удалено, хотя бы его название. Ищем по всем объявлениям данный ИД, но его нету, так как объявления удалено.
В итоге, что бы узнать какое объявление было удалено нужно при создании объявления сохранять где-то информацию о нем, а при удалении объявления вытягивать её от туда и стирать эту информацию.
Последний раз редактировалось leonbratsk 10:46, 24.04.2012, всего редактировалось 2 раза.
Чат CommFort города Братск "SkyLine"
адрес: vcommforte.com или 194.146.200.130
версия сервера: 5.40

Аватара пользователя
CrazyVirus
Сообщения: 747
Зарегистрирован: 13:40, 26.05.2007

Re: Считывание объявлений

Сообщение CrazyVirus » 16:41, 23.04.2012

leonbratsk писал(а):
Maxim Mirgorodsky писал(а):Это ID, только в 16-ричном виде (HEX).

fTextToAnsiString(IntToHex(cID,0))
Пробовал. Пишет "Объявление не найдено."
Пробовал так же через калькулятор вручную переводить, имеет ли значение регистор?
Полученное значение нужно перевернуть. :) Например, если в хексе FFEEDDCC, то надо инвертировать в CCDDEEFF.

Аватара пользователя
leonbratsk
Сообщения: 488
Зарегистрирован: 14:07, 21.03.2010

Re: Считывание объявлений

Сообщение leonbratsk » 17:37, 23.04.2012

Спасибо все заработало. Выложу код, может кому-то потребуется.
function IDbulletin(nomer: integer): string;
var
obrabotka: string;
k:integer;
begin
obrabotka:=InttoHex(nomer,0);
for k := 1 to 4 do
begin
Result:=Copy(obrabotka,k*2-1,2)+Result;
end;
Последний раз редактировалось leonbratsk 10:45, 24.04.2012, всего редактировалось 1 раз.
Чат CommFort города Братск "SkyLine"
адрес: vcommforte.com или 194.146.200.130
версия сервера: 5.40

Maxim Mirgorodsky
Администратор
Сообщения: 6730
Зарегистрирован: 09:56, 27.06.2005
Благодарил (а): 1 раз

Re: Считывание объявлений

Сообщение Maxim Mirgorodsky » 10:40, 24.04.2012

leonbratsk писал(а):
Maxim Mirgorodsky писал(а):Это ID, только в 16-ричном виде (HEX).

fTextToAnsiString(IntToHex(cID,0))
Пробовал. Пишет "Объявление не найдено."
Пробовал так же через калькулятор вручную переводить, имеет ли значение регистор?

И второй момент, который я заметил недавно.
Удаление объявления
ID: 1102
Блок данных: число(ID объявления)

Зачем получать ID, если его уже не существует? Могли бы хоть информацию прикрепить какую-нибудь. Допустим нужно было узнать какое объявление было удалено, хотя бы его название. Ищем по всем объявлениям данный ИД, но его нету, так как объявления удалено.
В итоге, что бы узнать какое объявление было удалено нужно при создании объявления сохранять где-то информацию о нем, а при удалении объявления вытягивать её от туда и стирать это информацию.

Хорошо, расширим информативность в сл. версии.

Аватара пользователя
-=SJ=-
Сообщения: 246
Зарегистрирован: 02:21, 06.04.2007

Re: Считывание объявлений

Сообщение -=SJ=- » 19:41, 24.04.2012

leonbratsk писал(а):Спасибо все заработало. Выложу код, может кому-то потребуется.
function IDbulletin(nomer: integer): string;
var
obrabotka: string;
k:integer;
begin
obrabotka:=InttoHex(nomer,0);
for k := 1 to 4 do
begin
Result:=Copy(obrabotka,k*2-1,2)+Result;
end;


Гораздо эффективнее было бы развернуть байты в Nomer перед конвертацией в строку

Код: Выделить всё

function IDbulletin(Nomer: integer): string;
var pNomer : PByte;
    bTemp : Byte;
begin
  pNomer := PByte(@Nomer);

  bTemp := pNomer^;
  pNomer^ := (pNomer+3)^;
  (pNomer+3)^ := bTemp;

  bTemp := (pNomer+1)^;
  (pNomer+1)^ := (pNomer+2)^;
  (pNomer+2)^ := bTemp;

  Result := IntToHex(Nomer, 8);
end;

Ответить