![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как поделить Cardinal на Integer ? [D7, WinXP]
Фёдор Мегатронов © (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)