![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как поделить Cardinal на Integer ? [D7, WinXP]
Фёдор Мегатронов © (2004-08-27 23:36:00)Вот возвращает мне одна функция тип Cadrinal(DWORD)
(dwBuffer : DWORD)
мне его надо поделить на 1024 (чирбы байты превести в килобайты)
и вывести на форму...
IS := integer(@dwBuffer); на него не дайствует. IS я всё равно не могу поделить на 1024, хоть ты убейся. а мне надо .. подскажите пожалуйста
GrayFace (2004-08-31 16:58:00) [1]Фёдор Мегатронов (29.08.04 0:32) [14]
function HttpQueryInfo(hRequest: HINTERNET;
dwInfoLevel: DWORD;
lpvBuffer: Pointer;
var lpdwBufferLength: DWORD;
var lpdwReserved: DWORD): BOOL; stdcall;
var Buffer:integer;
if HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH, @Buffer, dwBufferLen, dwIndex)
then
begin
Temp := IntToStr(dwBuffer);
end;
Может быть так:
var Buffer:string;
SetLength(Buffer,255);
if HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH, @Buffer, length(Buffer), dwIndex)
then
begin
Temp := Buffer;
end;
begin...end (2004-08-29 14:27:00) [2]
> [31] KSergey © (29.08.04 13:25)
> Не, ну бывает полезно посмотреть на реальный пример
В том то и дело, что в справке по ссылочке Exampleлегко можно найти реальный пример использования GetMem :-)
Фёдор Мегатронов (2004-08-29 14:02:00) [3]KSergey
как не странно, я нашел не один пример использования ЭТОЙ функции, но ни один из них корректно не работает. адрес яндекса я знаю.
Ну не работает оно так 8) ... чего у меня нет такого что есть у них ? я делал и так как там точ в точ и ещё много примеров видел. нигде не работает.
KSergey (2004-08-29 13:25:00) [4]> [30] begin...end © (29.08.04 13:20)
> Тут даже Яндекс не нужен. Достаточно в справку посмотреть.
Не, ну бывает полезно посмотреть на реальный пример, особенно когда что-то недогоняешь.
Но, боюсь, вы ему сейчас все расскажете. Впрочем, будет на эту ветку ссылаться как на справочник по всем ф-циям по-русски ;)
begin...end (2004-08-29 13:20:00) [5]
> [28] Фёдор Мегатронов (29.08.04 13:10)
После GetMem() указатель будет указывать на начало области памяти, которую ты можешь использовать (размер её ты также указываешь в GetMem).
Перед вызовом GetMem() указатель тоже на что-то указывает, но не на то, что тебе надо.
> [29] KSergey © (29.08.04 13:17)
Тут даже Яндекс не нужен. Достаточно в справку посмотреть.
KSergey (2004-08-29 13:17:00) [6]2 Фёдор Мегатронов
Ты адрес яндекса знаешь? Подсказать?
За 5 минут нашелся пример использования этой ф-ции
http://www.extractor.ru/forum/posting.php?mode=quote&p=2030&sid=72aa58724f5e1c924a1b4a734c2ea050
PS
Люди, надо что-то с кладовкой решать... Досадно в яндексе на 2-3 месте видеть ссылку на местную кладовку - но, увы, не иметь туда доступа..
По сегодняшним вопросам уже 2 ссылки в яндексе на кладовку было...
Фёдор Мегатронов (2004-08-29 13:10:00) [7]тоесть это как-бы инициализация ? и её надо вызывать до использования указателя?
GuAV (2004-08-29 12:39:00) [8]getmem выделяет память в указанном объёме и возвращает в указатель (первый параметр).
Фёдор Мегатронов (2004-08-29 12:28:00) [9]@_@
можешь обьяснить что за функция getmem ? и куда она возвращает результат и какого типа
GuAV (2004-08-29 01:50:00) [10]getmem(dwbuffer, dwbufferlen);
dwbuffer - PChar
Фёдор Мегатронов (2004-08-29 01:41:00) [11]я понимаю что dwBufferLen - это сколько памяти надо выделить.
я не понял как использовать твой getmem...
GuAV (2004-08-29 01:35:00) [12]
> getmem(dwbuffer, dwbufferlen)
dwbufferlen - это сколько dwbufferlen - скока памяти выделить под результат.
потом присвой строке этот pchar.
Фёдор Мегатронов (2004-08-29 01:27:00) [13]getmem как использовать ?
GuAV (2004-08-29 01:19:00) [14]
> PChar(@dwBuffer).
может объяви буфер как pchar, сделай getmem(dwbuffer, dwbufferlen) bufferlen посиавь побольше...
Фёдор Мегатронов (2004-08-29 01:15:00) [15]Результат (по MSDNу) - это Булево значение, которые показывает прошли ли функция или нет. по этому я её через IF и вызываю.
попробывал с New(dwBuffer)
он мне вернул 9916608
чёрт .. у меня крыша едет...
я в одном факе видел использование этой функции. там было как PChar(@dwBuffer).
ещё правдо есть функция InternetQueryDataAvailable. но она берёт информацию из заголовков .. которая не всегда верная, точнее всегда не верная , поэтому я хочу использовать именно функцию HttpQueryInfo, хотя у меня закралось подозрение, что она тоже из хэадеров берёт размер файла...
GuAV (2004-08-29 01:02:00) [16]А уверен, что в dwBuffer возвращает, может в результат?
и попробуй ещё перед вызовом New(dwBuffer);
Фёдор Мегатронов (2004-08-29 00:58:00) [17]да, конечно.
GuAV (2004-08-29 00:54:00) [18]Хм.. @ перед dwBufer убрал ?
Фёдор Мегатронов (2004-08-29 00:52:00) [19]вывалился с исключением EAccess Violation и показал на эту строчку Temp:=dwBuffer^;
GuAV (2004-08-29 00:48:00) [20]Попробуй объявить у себя как dwBuffer: PInteger, а читать Temp:=dwBuffer^;