Главная страница
    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.45 MB
Время: 0.008 c
1-53591
Genry
2004-02-06 21:31
2004.02.17
Как правильно присвоить PChar переменной String


4-53811
comwad
2003-12-11 09:08
2004.02.17
Какие *.pas при использовании функции DeviceIoControl нужны?


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


4-53818
Mohamed
2003-12-11 23:09
2004.02.17
Stop watch


1-53476
Алексей
2004-02-06 10:51
2004.02.17
Delphi jpg to text





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский