Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Вниз

Как быстро достать информацию по данному указателю ?   Найти похожие ветки 

 
Фёдор Мегатронов   (2004-08-04 23:01) [0]

Вот есть у меня функция HttpQueryInfo ... с параметром HTTP_QUERY_CONTENT_LENGTH, чтобы она мне вернула размер файла.

Но она его возвращает в виде указателя (Pointer) , его она записывает в одну переменную...

вот. Как быстрее всего то число которое она на самом деле вернула (размер файла) вывести на форму в Label ??


 
Palladin ©   (2004-08-05 01:43) [1]

Чья функция твоя? Размер какого файла? С чего вдруг она возвращает какой то размер в виде указателя. Точнее с чего ты взял что это размер?


 
KADAN ©   (2004-08-05 01:49) [2]

Palladin прав
http://delphimaster.ru/vopros/index.html


 
Бином Ньютоныч   (2004-08-05 10:47) [3]

StrToInt(PChar(lpvBuffer)). Если конечно речь идет о функции из wininet.dll.


 
GrayFace ©   (2004-08-05 13:47) [4]

Label1.Text:=PChar(lpvBuffer) если речь идет о том, о чем речь вел Бином Ньютоныч - возвращается строка.
Label1.Text:=IntToStr(PInt64(lpvBuffer)^) если возвращается число.


 
GrayFace ©   (2004-08-05 14:12) [5]

KADAN ©   (05.08.04 1:49) [2]
ИМХО, плохой рассказ.


 
Фёдор Мегатронов   (2004-08-05 16:51) [6]

Я думал что эта функция вам известна ..

функция из библиотеки Wininet возвращает информацию о файле в инете (на пример дату создания или изменения ...) . Мне нужно с помощью неё узнать размер файла.

но буфер для возврата значения она требует чтобы был типа Pointer.

Попробую сделать как GrayFace сказал.


 
Palladin ©   (2004-08-06 02:20) [7]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/httpqueryinfo.asp


 
Фёдор Мегатронов   (2004-08-06 23:11) [8]

Label1.Text:=PChar(lpvBuffer) - когда делаещь так, то всё компилиться, но в место размера фаила - пустота.. тоесть лабел пуст ...

У меня так сделано

//ВТОРОЙ ПОТОК

var
   TrueItemSize : Pointer;

Procedure ThreadClass.ItemSize;
begin
Form1.Label4.Caption := PChar(TrueItemSize);
end;

...

hSession := InternetOpen("ACF-GET",PRE_CONFIG_INTERNET_ACCESS, nil, nil, 0);

hURL := InternetOpenURL(hSession, PChar(Form2.Edit1.Text), nil, 0, 0, 0);

HttpQueryInfo(hUrl, HTTP_QUERY_CONTENT_LENGTH, TrueItemSize, dwBufferLen, dwIndex);

...

при выводе на форму - ничего не выводиться


 
Тестировщица ©   (2004-08-07 07:05) [9]

мдя...так попробуй...
var
  TrueItemSize : DWORD;
....
HttpQueryInfo(hUrl, HTTP_QUERY_CONTENT_LENGTH, @TrueItemSize, dwBufferLen, dwIndex);

Procedure ThreadClass.ItemSize;
begin
Form1.Label4.Caption := IntToStr(TrueItemSize);
end;

ps/ Я ни разу не использовала эту функцию, НО...
Есть ли разница между буфером для приема информации и его адресом?


 
GrayFace ©   (2004-08-07 10:21) [10]

Скорее всего так:
var TrueItemSize:Int64;

HttpQueryInfo(hUrl, HTTP_QUERY_CONTENT_LENGTH, @TrueItemSize, {dwBufferLen} 4, dwIndex);

Procedure ThreadClass.ItemSize;
begin
 Form1.Label4.Caption := IntToStr(TrueItemSize);
end;


Очень сомнительно, но возможно так:

var TrueItemSize:string;
SetLength(TrueItemSize,256);
HttpQueryInfo(hUrl, HTTP_QUERY_CONTENT_LENGTH, @TrueItemSize, {dwBufferLen} 256, dwIndex);

Procedure ThreadClass.ItemSize;
begin
 Form1.Label4.Caption := TrueItemSize;
end;


 
Бином Ньютоныч   (2004-08-07 11:07) [11]

Результаты вызова функций надо проверять. И ошибки анализировать.


 
Тестировщица ©   (2004-08-07 14:21) [12]

>GrayFace ©   (07.08.04 10:21) [10] Зачем гадать? можно и в MSDN заглянуть
HttpQueryInfo is used to return response or request headers from an HTTP request.
You can retrieve different types of data from HttpQueryInfo:
strings (default)
SYSTEMTIME (for Data: Expires:, headers)
DWORD (for STATUS_CODE, CONTENT_LENGTH, and so on if HTTP_QUERY_INFO_NUMBER has been used)

BOOL WINAPI HttpQueryInfo(
HINTERNET hRequest,
DWORD dwInfoLevel,
LPVOID lpBuffer,
LPDWORD lpdwBufferLength,
LPDWORD lpdwIndex);
.....

lpBuffer
[in\out] Long void pointer to the buffer that receives the information. lpdwBufferLength
[in\out] Long pointer to a value that contains the length of the data buffer.


 
Фёдор Мегатронов   (2004-08-07 18:33) [13]

Тестировщица

по твоему методу всё компилиться ... и даже работает, только не правельно - он возвращает "0". Пробовал на разных серверах, всё равно Ноль. в чём может быть проблема ?


 
Мастер ©   (2004-08-07 20:02) [14]

>Фёдор Мегатронов   (07.08.04 18:33) [13]

Может быть стоит немного теории почитать сначала?
Ведь в форуме не обучением базовым понятиям занимаются?


 
Фёдор Мегатронов   (2004-08-07 20:57) [15]

Мастер я конечно ещё только начинающий кодер, но поверьте мне, сначала я лезу в книжку, коих у меня не мало, а только потом уже на форум.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.037 c
1-1091899829
dracula
2004-08-07 21:30
2004.08.22
Как избавиться от подвисания программы


1-1091795371
NailMan
2004-08-06 16:29
2004.08.22
Чем можно графики отображать?


3-1090906118
artem123
2004-07-27 09:28
2004.08.22
Инкрементное поле в Firebird 1.5 через dbExpress


1-1092128947
iPod
2004-08-10 13:09
2004.08.22
ThreadSafe доступ к переменным


14-1091535883
McSimm
2004-08-03 16:24
2004.08.22
Искренне рад поздравить





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский