Страница: 1 |
Страница: 1 |
Вопрос: Помогите перевести кусок Sub'a с Delphi 6
Добавлено: 05.11.04 14:11
Автор вопроса: Александр | ICQ: 204034
1) Вот код на шестом дельфине. Особенно интересует как перевести функцию BlockWrite
Buffer: array[1..1024] of Byte;
...
REPEAT
err:= InternetReadFile(hURL, @Buffer,SizeOf(Buffer),BufferLen);
IF err= false then
begin
ShowMessage ('Ошибка :(');
exit;
end;
BlockWrite(f, Buffer, BufferLen);
Application.Processmessages;
UNTIL (BufferLen= 0) Or (NADO= FALSE);
ShowMessage ('Успешно загружено!');
end;
Помогите, плиз. Очень надо!
2) Не дадите функцию/суб для бинарной записи в файл?
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #1
Добавлено: 05.11.04 14:29
2)
Open path For Binary Access Write As #1
Put #1, 1, data
Close #1
End Sub
' path - Путь файла
' data - Че пишем...
Номер ответа: 2
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #2
Добавлено: 05.11.04 15:15
1) а что за blockwrite не знаешь?
2) Пасиба
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 05.11.04 15:43
Если тебе пример по InternetReadFile нужен то его можно и на VB найти
BlockWrite записывает в конец переменной f кажется, сейчас Дельфи под рукой нет, точно сказать не могу
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 05.11.04 17:19
Кстати, вот сейчас сижу инет часть пытаюсь сваять для клиента форума, вот что получается, кажется как раз по твоей теме
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternet As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByRef dwContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal dwNumberOfBytesToRead As Long, ByRef lpdwNumberOfBytesRead As Long) As Integer
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternet As Long, ByVal lpszServerName As String, ByVal nServerPort As Long, ByVal lpszUserName As String, ByVal lpszPassword As String, ByVal dwService As Long, ByVal dwFlags As Long, ByRef dwContext As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInternet As Long) As Boolean
Private Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" (ByVal hConnect As Long, ByVal lpszVerb As String, ByVal lpszObjectName As String, ByVal lpszVersion As String, ByVal lpszReferrer As String, ByVal lplpszAcceptTypes As String, ByVal dwFlags As Long, ByRef dwContext As Long) As Long
Private Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" (ByVal hRequest As Long, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByRef lpOptional As Any, ByVal dwOptionalLength As Long) As Long
Private Const INTERNET_OPEN_TYPE_PRECONFIG As Long = 0&
Private Const INTERNET_SERVICE_HTTP As Long = 3&
Private Const INTERNET_DEFAULT_HTTP_PORT As Long = 80&
Private hInternet As Long, hConnect As Long, hRequest As Long
Public Function GetAllForums(ByRef outData As String) As Boolean
Dim szBuffer As String * 1024, _
dwBytesRead As Long
hInternet = InternetOpen(sInetName, INTERNET_OPEN_TYPE_PRECONFIG, cNull, cNull, cNull)
If Not hInternet = cNull Then
' Îòêðûâàåì HTTP ñåññèþ
hConnect = InternetConnect(hInternet, sOfflineHost, INTERNET_DEFAULT_HTTP_PORT, cNull, cNull, INTERNET_SERVICE_HTTP, cNull, cNull)
If Not hConnect = cNull Then
' Îòêðûâàåì çàïðîñ
hRequest = HttpOpenRequest(hConnect, "GET", sURLGetForums, cNull, cNull, cNull, cNull, vbNull)
If Not hRequest = cNull Then
' Ïîñûëàåì çàïðîñ
GetAllForums = Not (HttpSendRequest(hRequest, vbNullString, cNull, ByVal cNull, cNull) = cNull)
If GetAllForums Then
Do While InternetReadFile(hRequest, ByVal szBuffer, Len(szBuffer), dwBytesRead)
outData = outData & Left(szBuffer, dwBytesRead)
DoEvents
If dwBytesRead = cNull Then Exit Do
Loop
End If
Call InternetCloseHandle(hRequest)
End If
Call InternetCloseHandle(hConnect)
End If
Call InternetCloseHandle(hInternet)
End If
End Function
Номер ответа: 5
Автор ответа:
Nash Bridges
Вопросов: 5
Ответов: 139
Профиль | | #5
Добавлено: 05.11.04 18:52
там лучше юзать не wininet.dll, а MSXML library.
Все равно ее придется использовать для парсера хмл.
Номер ответа: 6
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #6
Добавлено: 05.11.04 19:24
Все равно ее придется использовать для парсера хмл.
Это ты к чему?? Ты похоже промахнулся топиком...
Номер ответа: 7
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #7
Добавлено: 05.11.04 23:45
это он про клиента мне
А код я тебе вполне рабочий дал...
Номер ответа: 8
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #8
Добавлено: 06.11.04 07:32
Я в дельфях вообще чайник