Я получаю исключение EIdTFTPAllocationExceeded
при передаче файла от меня (сервер - с помощью компонента Indy TIdTrivialFTPServer
) на устройство. Я не могу найти никакой информации о том, что может означать это исключение, за исключением, возможно, проблемы с дисковым пространством на клиенте (что, я знаю, не так, потому что, если я передаю файл через другой TFTP-сервер, проблем нет).
- Что за исключение пытается мне сказать?
- Как мне обойти это?
- Есть какой-нибудь код, который я пропускаю?
Код моего TFTP-сервера (все) для сервера:
__fastcall TTrivialFTPServer::TTrivialFTPServer(TComponent* Owner) : TDataModule(Owner)
{
root = IncludeTrailingPathDelimiter(GetCurrentDir());
}
// ---------------------------------------------------------------------------
void __fastcall TTrivialFTPServer::tftpReadFile(TObject *Sender, UnicodeString &FileName, const TPeerInfo &PeerInfo, bool &GrantAccess, TStream *&AStream, bool &FreeStreamOnComplete)
{
FreeStreamOnComplete = true;
FileName = StringReplace(FileName, "/", "\\", TReplaceFlags() << rfReplaceAll);
FileName = ExtractFileName(FileName);
if (FileExists(root + "files\\" + FileName, false))
{
AStream = new TFileStream(root + "files\\" + FileName, fmOpenRead | fmShareDenyWrite);
GrantAccess = true;
}
else
{
GrantAccess = false;
}
}