Написать его за меня.
Не использовать Declare, а использовать импорт через TLB
Писать код так, чтобы он не зависел от рантайма, а значит ничего не могло бы порушить поток.
Rody66 писал(а):Ты про CreateThread? Или вообще про все функции в программе (не в потоке) ?
Rody66 писал(а):Вот это поинтересней. Можно подробнее о рантайме, и что вообще такое зависеть от рантайма? Единственное что я знаю, так это то, что рантайм переводится как время выполнения, получается не зависеть от времени выполнения? Как то несуразно.
Все функции, которые будут вызывать из нового потока.
Рантайм это библиотека msvbvm60.dll. Или msvbvm50.dll Или даже msvbvm61.dll, если когда-нибудь руки дойдут. Оттуда импортируются все функции вроде MsgBox, DoEvents или InputBox, но, что более важно, некоторые функции оттуда неявно используются по ходу дела.
Так вот, придерживаясь определённой несложной техники, можно писать код так, что никакого упоминания рантайма не будет.
Rody66 писал(а):Так если все берется из msvbvm60.dll , какой же это техники надо придерживаться, чтобы избежать использование всех функций в потоке? Тогда от такого потока и толку не будет вовсе. Мне такая техника не ясна.
Rody66 писал(а):Дак в том то и дело, что у качалки от Темича
Используй WinHTTP с флагом WINHTTP_FLAG_ASYNC, и не нужен будет доп. поток.
Закачать чем? Методом POST или речь вообще о FTP?
Хакер писал(а):Очень грубо говоря: типы — только Long, Integer, Byte, функции — только из TLB.
Mikle писал(а):Оказывается Single и Double тоже?
Приоритет уходит скорости выполнения. То есть чем быстрее, тем лучше, ну и главное чтобы процесс не повисал. Только вот не представляю себе даже, как методом POST можно изменить файл на сервере (а мне буквально несколько символов надо в текстовике менять), с http технологиями не особо знаком.
Rody66 писал(а):Только вот не представляю себе даже, как методом POST можно изменить файл на сервере (а мне буквально несколько символов надо в текстовике менять), с http технологиями не особо знаком.
Mikle писал(а):То есть, если исключить исключения (тавтология ), FP в таких потоках применять тоже можно? Речь о четырёх основных мат. операциях.
Ты не сможешь с помощью ftp исправить маленький фрагмент. Придётся загружать весь файл.
Оно, конечно нечасто, но бывает нужно, я почитал о том, как народ мучается изобретая многопоточность на VB и стал поглядывать в сторону PowerBasic, там и ассемблер встроенный есть и прочие интересности. Не знаю, как что-то большое, но небольшие программки на нем писать можно.Хакер писал(а):Лучше всё-таки подождать выхода кирпича. Если народ будет давить и я буду чувствовать, что это кому-то кроме меня нужно, я конечно сделаю быстрее.
А в чем тогда вообще вопрос, не мегабайты же сотнями перегонять, при таком раскладе даже и заморачиваться не стоить.Rody66 писал(а):ну когда файл весит <10 байт, то я думаю, не сложно и залить целиком, верно же?
А в чем тогда вообще вопрос, не мегабайты же сотнями перегонять, при таком раскладе даже и заморачиваться не стоить.
Есть WinInet, который аналогичен WinHTTP, но включает в себя FTP- и другой функционал. Правда это настолько глючная вещь, что работать нужно очень осторожно, потому что реальной поведение функций отличается от того, что написано в документации.
hOpen = InternetOpen("API-Guide sample program", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
hConnection = InternetConnect(hOpen, "your ftp server", INTERNET_DEFAULT_FTP_PORT, "your login", "your password", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0)
Call FtpPutFile(hConnection, "c:\test.htm", "com/shared.txt", 1, 0)
InternetCloseHandle hConnection
InternetCloseHandle hOpen
INTERNET_FLAG_ASYNC нужно использовать. Логично же, не правда ли?
hConnection = InternetConnect(hOpen, "", INTERNET_DEFAULT_FTP_PORT, "", "", INTERNET_SERVICE_FTP, INTERNET_FLAG_ASYNC, 0)
INTERNET_FLAG_ASYNC0x10000000
Makes only asynchronous requests on handles descended from the handle returned from this function. Only the InternetOpen function uses this flag.
Сейчас этот форум просматривают: Yandex-бот и гости: 14