Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

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

 
Фёдор Мегатронов   (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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.048 c
3-1091101972
SergP
2004-07-29 15:52
2004.08.22
Проблема с запросом...(LEFT JOIN)


14-1090698815
Marser
2004-07-24 23:53
2004.08.22
Уезжаю!


1-1091946029
k-sergey
2004-08-08 10:20
2004.08.22
ListBox1MouseUp как узнать на каком items кликнули ?


14-1091522317
Kurtevich
2004-08-03 12:38
2004.08.22
Delphi + pointer = ?


3-1091013683
Klerk
2004-07-28 15:21
2004.08.22
Доступ к FireBird