Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как поделить Cardinal на Integer ? [D7, WinXP]


Страницы:   1 2

Фёдор Мегатронов ©   (2004-08-27 23:36:00) 

Вот возвращает мне одна функция тип Cadrinal(DWORD)

(dwBuffer : DWORD)

мне его надо поделить на 1024 (чирбы байты превести в килобайты)

и вывести на форму...

IS := integer(@dwBuffer); на него не дайствует. IS я всё равно не могу поделить на 1024, хоть ты убейся. а мне надо .. подскажите пожалуйста


Фёдор Мегатронов   (2004-08-29 00:32:00) [21]

function HttpQueryInfo(hRequest: HINTERNET;
                      dwInfoLevel: DWORD;
                      lpvBuffer: Pointer;
                      var lpdwBufferLength: DWORD;
                      var lpdwReserved: DWORD): BOOL; stdcall;

 {$EXTERNALSYM HttpQueryInfo}


GuAV   (2004-08-29 00:26:00) [22]


> Описаниепокажи

т.е., что по Ctrl+Click.


Фёдор Мегатронов   (2004-08-29 00:25:00) [23]

dwBufferLen, dwIndex : DWORD;
dwBuffer : Pointer;

dwBufferLen := 20;
dwIndex := 0;

HTTP_QUERY_CONTENT_LENGTH - флаг для этой функции, для того чтобы она возвращала размер файла (она ешё много чего может возвращать)

if HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH, @dwBuffer, dwBufferLen, dwIndex)
 then
  begin
   Temp := PChar(@dwBuffer);
  end;

Form1.Label8.Caption := (temp + 'байт');


GuAV   (2004-08-29 00:17:00) [24]


> HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH, @dwBuffer,
> dwBufferLen, dwIndex)

Описание покажи


Фёдор Мегатронов   (2004-08-29 00:00:00) [25]

dwBuffer оказываеться надо описывать как Pointer. 8)

{
Temp : string;
Temp := PChar(@dwBuffer);

так он возвращает 1832:6
}

{
Temp : integer;
Temp := Integer(dwBuffer);

так он возвращает 842217521
}

{
Temp : Integer;
Temp := Integer(@dwBuffer);

так он возвращает 14352216
}

ни одино из этих чисел и близко не похоже на файл

он весит 179кб, или 183296 байт.

что за фигня происходит ?


GuAV   (2004-08-28 14:39:00) [26]


> InetItemSize := round(@dwBuffer/1024);

InetItemSize := dwBuffer div 1024;
или как есть тока @ убери нефиг указатель делить


Фёдор Мегатронов   (2004-08-28 13:16:00) [27]

2Cardinal

inetitemsize : integer;
dwBuffer : Cardinal;

InetItemSize := round(@dwBuffer/1024);

пишет [Error] Thread1.pas(128): Operator not applicable to this operand type


Cardinal   (2004-08-28 12:29:00) [28]

Или я чего-то недопонял или все очень просто.

procedure TForm1.Button1Click(Sender: TObject);
var
 c: cardinal;
 a: integer;
begin
 a := round(c/1024);
end;


Фёдор Мегатронов   (2004-08-28 12:13:00) [29]

3APA3A

функция HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH, @dwBuffer, dwBufferLen, dwIndex)

@dwBuffer - это адрес на значение

dwBuffer : DWORD;

вобщем ну никак её не поделить.


GuAV   (2004-08-28 03:29:00) [30]


> Integer(dwBuffer/1024) - уже не проходит?

Не проходит div надо. а тут можно и shr 10 да всё равно в shr скомпилится


Германн   (2004-08-28 02:21:00) [31]

Вы, пардон, что - озабочены EMail'ом?

Integer(dwBuffer/1024) - уже не проходит?
Или не проходит - IntToStr("одна функция тип Cadrinal(DWORD)"/1024); ?


3APA3A   (2004-08-28 00:53:00) [32]

Какая функция?
 dwBuffer - это адрес или значение?
 Если адрес - какого размера блок данных?


GanibalLector   (2004-08-27 23:58:00) [33]

Не,[1] не верно.Пардон...


GanibalLector   (2004-08-27 23:48:00) [34]

а на кой IS := integer(@dwBuffer)?

Может так:
Cardinal(@dwBuffer)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо