Форум: "WinAPI";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
ВнизЗапись в файл Найти похожие ветки
← →
K@rt (2003-12-13 16:16) [0]Помогите, плз, разобраться как записывать в файл.
Я делал так:
HANDLE hFile;
PCHAR Str = "Test";
hFile = CreateFile("D:\\test.ini",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
WriteFile(hFile,Str,sizeof(Str),0,NULL);
CloseHandle(hFile);
ПРограмма вылетает с ошибкой. Почему?
← →
Digitman (2003-12-13 16:28) [1]WriteFile(hFile,Str^,strlen(Str),0,NULL);
← →
SPeller (2003-12-13 16:35) [2]Немного не так:
WriteFile( hFile, Str, strlen( Str ), SomeVar, 0 );
SomeVar - принимает количество байт, записанных в файл. В функцию передаётся указатель на переменную, а ты передаёшь ноль.
← →
K@rt (2003-12-13 20:47) [3]
> WriteFile( hFile, Str, strlen( Str ), SomeVar, 0 );
Это не помогает :(
← →
Polevi (2003-12-13 21:29) [4]WriteFile( hFile, PChar(Str)^, strlen( Str ), SomeVar, 0 );
← →
SPeller (2003-12-14 08:54) [5]
> Polevi © (13.12.03 21:29) [4]
У человека С++, а не паскаль, и переменная Str уже объявлена как указатель на строку.
> K@rt © (13.12.03 20:47) [3]
> > WriteFile( hFile, Str, strlen( Str ), SomeVar, 0 );
> Это не помогает :(
Что вы мне сказки рассказываете? ВОт такой код у меня в Билдере работает на ура:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HANDLE hf;
int br;
PChar Str = "MyText";
hf = CreateFile( "myfile.txt", GENERIC_WRITE, FILE_SHARE_READ,
0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
WriteFile( hf, Str, strlen( Str ), (unsigned long *)&br, 0 );
CloseHandle( hf );
}
← →
K@rt (2003-12-14 10:02) [6]
> SPeller
Спасибо, у меня в VC++ такой код тоже работает на ура
Только, почему в
> hf = CreateFile( "myfile.txt", GENERIC_WRITE, FILE_SHARE_READ,
> 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
пишешь FILE_SHARE_READ, мы же для записи открываем - FILE_SHARE_WRITE.
← →
SPeller (2003-12-15 03:53) [7]
> пишешь FILE_SHARE_READ, мы же для записи открываем - FILE_SHARE_WRITE
Этот флаг указывает те операции, которые разрешены другим приложениям. Тоесть, если мы укажем FILE_SHARE_WRITE, то любая другая прога сможет записать в этот файл всё что угодно одновременно с нашей программой. А если указан FILE_SHARE_READ, то все остальные смогут лишь читать содержимое файла. Конечно, в нашем примере разницы нет, потому что файл оказывается открытым на очень малое время и как-то помишать процессу записи сложно. Можно вообще 0 прописать в этом параметре.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c