Спецы подскажите, что за ниппель?

Средства разработки, технические вопросы, отвечает (по мере сил) Отдел Разработок
Закрыто
XGarik
Новенький (0 lvl)
Сообщения: 4
Зарегистрирован: Чт сен 29, 2005 20:23

Спецы подскажите, что за ниппель?

Сообщение XGarik » Чт сен 29, 2005 20:34

Заметил тут недавно странный баг или так и должно быть?

Код Delphi для копирования файла на КПК (использование библиотеки RAPI.DLL):

procedure TForm1.Button1Click(Sender: TObject);
var
sTemplate:TStringList;
HDes:THandle;
o1:Poverlapped;
BytesWritten:DWORD;
begin
sTemplate:=TStringList.Create;
sTemplate.LoadFromFile('test.xml');
cerapiinit;
HDes := CeCreateFile ('\ipaq file store\test.xml',Generic_Write,File_Share_Write,nil,Create_Always,0,0);
CEWriteFile(HDes,PChar(sTemplate.Text),Length(sTemplate.Text),BytesWritten,@o1);
CECloseHandle(HDes);
CERapiUninit;
showmessage('Скопировано: '+inttostr(BytesWritten) + ' байт');
end;

Обратите внимание на выделенную строку и первый параметр ф-ии CECreateFile... Правильно, это значит создать файл test.xml в ПЗУ.

А теперь попробуем изменить путь так:
HDes := CeCreateFile ('\test.xml',Generic_Write,File_Share_Write,nil,Create_Always,0,0);

Программа выдает сообщение, что скопировано 0 байт. И на КПК создается пустой файл. ПОЧЕМУ?

mokaton
Кандидат (3 lvl)
Сообщения: 141
Зарегистрирован: Чт сен 01, 2005 15:03

Сообщение mokaton » Пт сен 30, 2005 01:00

А ты не думал потому что у тебя как раз и создается пустой файл!?:)
Были бы мозги, было б сотрясение

XGarik
Новенький (0 lvl)
Сообщения: 4
Зарегистрирован: Чт сен 29, 2005 20:23

Сообщение XGarik » Пт сен 30, 2005 10:16

mokaton писал(а):А ты не думал потому что у тебя как раз и создается пустой файл!?:)
Дело в том, что первая выделенная строка вполне адекватно копирует файл в ПЗУ (файл не пустой), а вот если вместо нее влепить че-нить другое \test1.xml, то прога просто создаст пустой файл т.е. функция CEWriteFile работает только через ПЗУ! Вчера сидел с :shock: и диву давался, почему прога вдруг не копирует, а просто создает пустышки! В принципе я нашел решение проблемы - копирование в ПЗУ, а затем перемещение ф-ей CEMoveFile куда нужно, но все ровно очень интересно! Спецы просветите!

Закрыто

Вернуться в «Программирование для КПК»