Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.46 MB
Время: 0.009 c
1-53555
Воа
2004-02-05 12:51
2004.02.17
TColor -> HTML цвета


3-53357
YuRock
2004-01-28 16:50
2004.02.17
Проблема с блокировками в IB (FIB 1.0)


6-53687
nyc
2003-12-15 12:09
2004.02.17
TServerSocket


1-53462
Checist [root]
2004-02-06 13:06
2004.02.17
Свободу TreeView !


14-53691
Думкин
2004-01-30 06:04
2004.02.17
С днем рождения! 30 января.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский