Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.17;
Скачать: CL | DM;

Вниз

Запись в файл   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2004.02.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
4-53819
BorisSV
2003-12-15 12:48
2004.02.17
Убрать программу с панели задачь в XP


14-53708
Ig
2004-01-27 22:50
2004.02.17
Prince Of Persia : The Sands of Time


3-53377
ИМХО
2004-01-26 22:43
2004.02.17
О CSV-файлах


6-53684
serferian
2003-12-05 10:58
2004.02.17
Имя пользователя терминала Win2k


1-53592
Gad
2004-02-07 11:35
2004.02.17
RichEdit и документы Word