Главная страница
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.018 c
14-53748
BOA_KAA
2004-01-28 11:27
2004.02.17
Proxy для WIndows


6-53673
Night Cold
2003-12-12 13:35
2004.02.17
Помогите с Whois!!!!!


1-53446
dub
2004-02-09 13:48
2004.02.17
Работа с реестром


14-53762
Genry
2004-01-27 16:31
2004.02.17
Как восстановить шрифты в Windows ?


1-53517
Developerr
2004-02-05 15:23
2004.02.17
Можно ли выровнять один Label относительно другого?