Вверх ↑
Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
#16: 2009-03-01 21:24:01 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2025-01-21 02:05:38
карма: 0

0
Ответов: 817
Рейтинг: 52
#17: 2009-03-01 21:48:52 ЛС | профиль | цитата
пример дай

Блин, кто-нибудь дайте рабочий пример схемы

Dilma, дай пример ftp?


Сколько Вам лет уважаемый, (или уважаемые)
Хоть бы раз сказали ПОЖАЛУЙСТА

------------ Дoбавленo:

Да ну Вас... один флуд

э-э-э-э-э
т.е. мы виноваты (жаль нет смайлика ржущего до упаду)
карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#18: 2009-03-01 21:52:07 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2025-01-21 02:05:38
карма: 0

0
Ответов: 817
Рейтинг: 52
#19: 2009-03-01 21:53:31 ЛС | профиль | цитата
shpd-95-53-136-40.vologda писал(а):
-= DriveR =-, весна пришла?

Не поверите, точно этот же вопрос хотел Вам задать
карма: 1

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#20: 2009-03-01 22:28:22 ЛС | профиль | цитата
Народ! Вы схему видели

Я никогда не поверю, что ее мог нарисовать Alexbotch, тк в ней куча проколов, которые никогда бы не допустил опытный пользователь, да еще которому и подсказку дали, чуть ли, не по буквам.
карма: 22

0
Ответов: 3851
Рейтинг: 159
#21: 2009-03-01 22:33:55 ЛС | профиль | цитата
nesco, не забывай - масленица однако
карма: 0
начавший
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#22: 2009-03-01 22:36:02 ЛС | профиль | цитата
Андрей. писал(а):
масленица однако

Но не до такой же степени. В такой степени дальше шутера или NFS лучше не лезть
карма: 22

0
Ответов: 5446
Рейтинг: 323
#23: 2009-03-01 22:51:40 ЛС | профиль | цитата
nesco, и всё-таки WinFTP - далеко не интуитивно понятный компонент. НапримерЮ возьмём (доработанную) схему с 1й страницы:


#sha
Add(Button,11106100,427,189)
{
Left=5
Top=10
link(onClick,10677348:doEvent1,[])
}
Add(Hub,10677348,497,189)
{
link(onEvent1,12183600:doOpen,[])
link(onEvent2,12183600:doReadFile,[(585,202)(585,209)])
}
Add(WinFTP,12183600,658,189)
{
Host="localhost"
Username="ftpuser"
Password="123"
Directory="."
RemoteName="Bin2TXT.cpp"
Point(onWriteProgress)
Point(doFindFile)
Point(onFindFile)
link(onRead,14021310:doConvert,[])
}
Add(Memo,10968688,847,112)
{
Left=10
Top=40
Width=475
Height=200
}
Add(Convertor,14021310,742,196)
{
Mode=11
link(onResult,10968688:doAdd,[(810,202)(810,118)])
}

Вроде пускаю, по логам ыижу - файл отдаётся, а в окошке - тишина ... onError тоже молчит...
А ведь по логике родственного hiHttpGet должно работать! "Was ist das?" - как говорят товарищи с 52й кнопки телевизора. Вешаем Debug - видим гордый NULL в потоке. Это уже не , это уже o_O (или O_o, кому как больше нравится).

И только поковырявшись в сырце компонента, обнаруживаем, что без LocalName мы нифига не получим! Т.е. надо делать так:

#sha
Add(MainForm,2477748,329,182)
{
}
Add(Button,11106100,427,189)
{
Left=5
Top=10
link(onClick,10677348:doEvent1,[])
}
Add(Hub,10677348,497,189)
{
link(onEvent1,12183600:doOpen,[])
link(onEvent2,12183600:doReadFile,[(585,202)(585,209)])
}
Add(WinFTP,12183600,658,189)
{
Host="localhost"
Username="ftpuser"
Password="123"
Directory="."
RemoteName="Bin2TXT.cpp"
Point(onWriteProgress)
Point(doFindFile)
Point(onFindFile)
link(onRead,14021310:doConvert,[])
link(LocalName,16490438:Var2,[])
}
Add(Memo,10968688,847,112)
{
Left=10
Top=40
Width=475
Height=200
}
Add(Convertor,14021310,742,196)
{
Mode=11
link(onResult,10968688:doAdd,[(810,202)(810,118)])
link(Data,16490438:Var3,[(748,142)])
}
Add(MemoryStream,15400725,658,70)
{
}
Add(GetDataEx,16490438,651,133)
{
link(Data,15400725:Stream,[])
}
Add(InfoTip,10018094,630,35)
{
Info=#28:Самый важный элемент в схеме|
Width=106
Height=81
}

Так-то (с)
карма: 1

1
Голосовали:nesco
Разработчик
Ответов: 26170
Рейтинг: 2127
#24: 2009-03-01 23:05:41 ЛС | профиль | цитата
iarspider, ты уж извини, но вот эта сточка у тебя есть

RemoteName="Bin2TXT.cpp"
Что я в упор не нашел ее в схеме, которую тут приводили. Ты же достиг результата, и я не думаю, что продвинутый пользователь не смог бы этого надыбать
------------ Дoбавленo:

Меня прикалывает еще один момент, это кто же еще справлял масленицу, что умудрился обозвать FileStream LocalNamом ну совсем одно и то же
карма: 22

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#25: 2009-03-02 17:28:45 ЛС | профиль | цитата
Вот, решил сделать FTP_Browser для примера работы с WinFTP

По ходу пьесы возник вопрос -- почему, если убрать ReOpen, то кроме одного файла считать больше ничего нельзя. Ответ на этот вопрос я, пока, не нашел
------------ Дoбавленo:

Ну и кто, чего скажет, особенно, по ReOpeny
карма: 22

1
файлы: 1winftp_browser_narod.sha [16.6KB] [223]
Голосовали:Валерий
Ответов: 2125
Рейтинг: 159
#26: 2009-03-02 17:37:38 ЛС | профиль | цитата
Это к вопросу о том, что можно, а что нельзя:
MSDN писал(а):
After calling FtpFindFirstFile and until calling InternetCloseHandle, the application cannot call FtpFindFirstFile again on the given FTP session handle


Ошибка вот тут:

#pas
if FtpFindFirstFile(hFTP, PChar(fn), sRec, 0, 0) <> nil then
begin
fileSize := sRec.nFileSizeLow;
end

Дискуссию о правильных программах продолжим не здесь
карма: 1

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#27: 2009-03-02 17:42:16 ЛС | профиль | цитата
Во-во, до этого я тоже дошел, а дальше что
карма: 22

0
Ответов: 2125
Рейтинг: 159
#28: 2009-03-02 17:45:39 ЛС | профиль | цитата
Полагаю, надо исправить так:

#pas
hFile := FtpFindFirstFile(hFTP, PChar(fn), sRec, 0, 0);
if hFile <> nil then
begin
fileSize := sRec.nFileSizeLow;
InternetCloseHandle(hFile);
end
карма: 1

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#29: 2009-03-02 18:07:02 ЛС | профиль | цитата
tsdima, я вообще не понял, зачем там вот это


fileSize := sRec.nFileSizeLow;

Оно там вообще нигде не используется
------------ Дoбавленo:

Да и вот это непонятно



while (bufsize > 0) do
begin
if not InternetReadFile(hFile, @buffer,READ_BUFFERSIZE,bufsize) then Break;
if (bufsize > 0) and (bufsize <= READ_BUFFERSIZE) then
st.Write(buffer, bufsize);
_hi_OnEvent(_event_onReadProgress,integer(st.position));
end;
InternetCloseHandle(hFile);

Ведь здесь стоит InternetCloseHandle, почему он не срабатывает

И в твое случае, откуда берется hFile, когда это локальная переменная и определяется дальше



hFile := FtpOpenFile(hFTP,PChar(fn),GENERIC_READ,FTP_TRANSFER_TYPE_BINARY, 0);
карма: 22

0
Ответов: 2125
Рейтинг: 159
#30: 2009-03-02 18:12:50 ЛС | профиль | цитата
nesco писал(а):
откуда берется hFile

Как откуда, присваивается первой строкой в моём исправлении. Но если хочешь, определи другую переменную hFind:HINTERNET;, я просто использовал уже существующую.

nesco писал(а):
Оно там вообще нигде не используется

Видимо, предполагалось onReadProgress в процентах выдавать.

nesco писал(а):
почему он не срабатывает

Потому что оно закрывает то, что открыло FtpOpenFile.
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)