Форум: "Начинающим";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
ВнизКопирование файла по сети Найти похожие ветки
← →
Bora.ru (2007-08-28 19:15) [0]данная программа по замыслу должна запускаться на удаленном компе и скопировать файл на мой комп в папку Shared, в которой установлен полный доступ.
вот весь код:
var
sourcefile,destfile:pchar;
begin
sourcefile:="d:\file.rar";
destfile:="\\MyComp\Shared\file.rar";
CopyFile(sourcefile,destfile,false);
end.
Запускаю эту прогу на том компе, но безрезультатно. Хотя с моего компа в его расшаренную папку ф-ция CopyFile копирует без проблем. А также если копировать тот файл в какую-нибудь папку на его компе, то также работает. Но а вот по сети, блин, не хочет.
Что здесь не так?
← →
Reindeer Moss Eater © (2007-08-28 21:20) [1]GetlastErroor знает, что здесь не так.
← →
Bora.ru (2007-08-29 00:27) [2]
> Reindeer Moss Eater ©
это че функция такая? а как ее использовать?
← →
grisme © (2007-08-29 02:22) [3]F1 тебе подскажет, что за функция такая
← →
Reindeer Moss Eater © (2007-08-29 10:27) [4]Как использовать? Как и все остальные.
Вызывать и смотреть на возвращаемый результат.
← →
Bora.ru (2007-08-29 23:36) [5]GetLastError выдает результат - 5. В справке я не нашел, какая ошибка имеет такой код.
← →
Германн © (2007-08-30 01:26) [6]
> Bora.ru (29.08.07 23:36) [5]
>
> GetLastError выдает результат - 5. В справке я не нашел,
> какая ошибка имеет такой код.
>
FormatMessage тебе поможет перевести DWORD в LPTSTR.
:-)
← →
Reindeer Moss Eater © (2007-08-30 09:48) [7]Доступ запрещен.
← →
Bora.ru (2007-08-30 11:27) [8]
> Reindeer Moss Eater © (30.08.07 09:48) [7]
> Доступ запрещен.
Доступ запрещен к файлу-источнику или к папке, куда копируется файл?
← →
iXT © (2007-08-30 11:31) [9]> [8] Bora.ru (30.08.07 11:27)
Попробуй сделать эту операцию средствами не своей прогаммы
← →
Reindeer Moss Eater © (2007-08-30 11:37) [10]Доступ запрещен к файлу-источнику или к папке, куда копируется файл?
А самому-то не догадаться попробовать сначала открыть источник, потом создать файл назначения?
← →
Bora.ru (2007-08-30 11:39) [11]
> Германн © (30.08.07 01:26) [6]
> FormatMessage тебе поможет перевести DWORD в LPTSTR.
SysErrorMessage проще
← →
Bora.ru (2007-08-30 15:11) [12]код выполняется безошибочно, но что странно - безрезультатно.
← →
Anatoly Podgoretsky © (2007-08-30 15:14) [13]Откуда знаешь, нет же никакой обработки ошибок.
← →
Bora.ru (2007-08-30 15:50) [14]
> Anatoly Podgoretsky © (30.08.07 15:14) [13]
обработчик есть, я его просто позже добавил.
← →
Reindeer Moss Eater © (2007-08-30 15:51) [15]код выполняется безошибочно, но что странно - безрезультатно.
это оптический обман.
← →
Anatoly Podgoretsky © (2007-08-30 15:52) [16]
> обработчик есть, я его просто позже добавил.
У тебя обработчик ошибочный
← →
Bora.ru (2007-08-30 16:31) [17]var
sourcefile,destfile:pchar;
f:textfile;
e:word;
s:string;
begin
try
sourcefile:="d:\file.rar";
destfile:="\\MyComp\Shared\file.rar";
CopyFile(sourcefile,destfile,false);
assignfile(f,"error.txt");
rewrite(f);
write(f,"no errors");
closefile(f);
except
e:=getlasterror;
s:=SysErrorMessage(e);
assignfile(f,"error.txt");
rewrite(f);
write(f,s);
closefile(f);
end;
end.
в результате - текстовый файл содержит строку "no errors", но файл не скопирован.
← →
Reindeer Moss Eater © (2007-08-30 16:37) [18]У тебя ошибка в программе
← →
Reindeer Moss Eater © (2007-08-30 16:39) [19]Функции винапи бесполезно обертывать в try except они не генерируют исключений.
← →
Сергей М. © (2007-08-30 16:45) [20]
> Bora.ru
Ну ты и клоун)
← →
Anatoly Podgoretsky © (2007-08-30 16:46) [21]Не видать обработчика
← →
Riply © (2007-08-30 18:26) [22]>[19] Reindeer Moss Eater © (30.08.07 16:39)
>Функции винапи бесполезно обертывать в try except они не генерируют исключений.
А на чем основано это утверждение ?
← →
Reindeer Moss Eater © (2007-08-30 18:31) [23]А ты попробуй и фальсифицируй это утверждение.
:)
← →
Reindeer Moss Eater © (2007-08-30 18:33) [24]Винапи написано для всех.
В том числе для тех, кто пользуется языками и компиляторами в которых нет поддержки исключительных ситуаций.
← →
Riply © (2007-08-30 18:41) [25]> [23] Reindeer Moss Eater © (30.08.07 18:31)
>А ты попробуй и фальсифицируй это утверждение.
Я бы попробовала привести контпример, но не знаю как отличить API функцию от не API.
Beep - это API ?
← →
Reindeer Moss Eater © (2007-08-30 18:43) [26]Это Sysutils
procedure Beep;
begin
MessageBeep(0);
end;
А вот это уже Win API
function MessageBeep; external user32 name "MessageBeep";
← →
Reindeer Moss Eater © (2007-08-30 18:47) [27].... И там все, как и должно быть у нормальных людей:
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
И никаких генераций исключений
← →
Anatoly Podgoretsky © (2007-08-30 19:22) [28]> Riply (30.08.2007 18:41:25) [25]
Нет, это просто имя, а вот Windows.Beep это АПИ
← →
Bora.ru (2007-08-30 19:31) [29]Иными словами ошибка всетаки при CopyFile. Но почему же тогда программа не завершает работу на этом месте?
← →
Riply © (2007-08-30 19:41) [30]>[27] Reindeer Moss Eater © (30.08.07 18:47)
>.... И там все, как и должно быть у нормальных людей:
С тем, что некоторые API генерят исключения под дебугером, все согласны ?
Вот меня и интересует: может есть и такие, которые сгенерят и в "нормальных" условиях ?
← →
Leonid Troyanovsky © (2007-08-30 19:48) [31]
> Riply © (30.08.07 19:41) [30]
> С тем, что некоторые API генерят исключения под дебугером,
> все согласны ?
Под некоторым дебугером? :)
--
Regards, LVT.
← →
Bora.ru (2007-08-30 19:52) [32]короче GetLastError всеравно выдает ошибку "отказано в доступе". Но я на 100% уверен, что к файлу доступ есть. А в папке установлен доступ для записи. Ну люди, не смейтесь - помогите
← →
Leonid Troyanovsky © (2007-08-30 19:56) [33]
> Bora.ru (30.08.07 16:31) [17]
> CopyFile(sourcefile,destfile,false);
> assignfile(f,"error.txt");
> rewrite(f);
> write(f,"no errors");
> closefile(f);
> except
> e:=getlasterror;
Конечно, вызов CloseHandle из closefile прошел успешно.
Кто ж так ошибки обрабатывает? Учись, студент:
Win32Check(CopyFile(..));
--
Regards, LVT.
← →
Leonid Troyanovsky © (2007-08-30 19:58) [34]
> Bora.ru (30.08.07 19:52) [32]
> Но я на 100% уверен, что к файлу доступ есть. А в папке
> установлен доступ для записи.
Что за приложение, как запускается?
--
Regards, LVT.
← →
Riply © (2007-08-30 20:06) [35]> [31] Leonid Troyanovsky © (30.08.07 19:48)
>Под некоторым дебугером? :)
Чесно говоря, я в них(дебугерах) не очень разбираюсь,
но под Delphi этот код даст исключение:Handle := CreateEvent(nil, True, True, nil);
NtClose(Handle);
NtClose(Handle);
а в Help"e, (например для CloseHandle) написано:
Closing an invalid handle raises an exception when the application is running under a debugger.
This includes closing a handle twice, and using CloseHandle on a
handle returned by the FindFirstFile function.
P.S.
Sorry, что зафлудила ветку.
← →
Bora.ru (2007-08-30 20:10) [36]
> Leonid Troyanovsky © (30.08.07 19:58) [34]
> Что за приложение, как запускается?
Просто проект без форм
← →
Leonid Troyanovsky © (2007-08-30 20:25) [37]
> Riply © (30.08.07 20:06) [35]
Принимается.
Да, ИШ как-то приводил здесь примеры,
но были там "нормальные условия" не упомню.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2007-08-30 20:27) [38]
> Bora.ru (30.08.07 20:10) [36]
> Просто проект без форм
И?
Если сложно, то, конечно, можно не отвечать.
--
Regards, LVT.
← →
Bora.ru (2007-08-30 21:08) [39]
> Leonid Troyanovsky © (30.08.07 19:58) [34]
> Что за приложение
в первом сообщении написано - это и есть вся программа
> как запускается?
через Telnet запускается
← →
Leonid Troyanovsky © (2007-08-30 21:34) [40]
> Bora.ru (30.08.07 21:08) [39]
> через Telnet запускается
Акаунту телнета разрешен доступ к share?
Что показывает net view \\MyComp?
И в чем, собс-но, смысл этого приложения, если все
можно (если можно) сделать из телнета.
--
Regards, LVT.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.129 c