int m;
int iFileHandle;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
m=StrToInt(Edit1->Text);
iFileHandle = FileOpen("file.text", fmOpenWrite);
FileWrite(iFileHandle, &m, 4);
FileClose(iFileHandle);
}
Запись в файл
Да, вот кусок кода. Подскажите, пожалуйста, в чём проблема. Спасибо!
Код:
Код:
char buf[32];
int m;
int iFileHandle;
m=StrToInt(Edit1->Text);
iFileHandle = FileOpen("file.text", fmOpenWrite);
sprintf(buf, "%d", m);
FileWrite(iFileHandle, buf, strlen(buf));
FileClose(iFileHandle);
int m;
int iFileHandle;
m=StrToInt(Edit1->Text);
iFileHandle = FileOpen("file.text", fmOpenWrite);
sprintf(buf, "%d", m);
FileWrite(iFileHandle, buf, strlen(buf));
FileClose(iFileHandle);
Или проще
Код:
int iFileHandle = FileOpen("file.text", fmOpenWrite);
FileWrite(iFileHandle, Edit1->Text, Edit1->Text.Length());
FileClose(iFileHandle);
FileWrite(iFileHandle, Edit1->Text, Edit1->Text.Length());
FileClose(iFileHandle);
спасибо! Но почему-то в первом случае записывыется в файл 4198400, независимо от значения данных (в моём случае - это число от нуля до 100);
а во втором ошибка в функции
Код:
FileWrite(iFileHandle, Edit1->Text, Edit1->Text.Length());
где указатель на данные, второй параметр, является AnsiString, а не const void, как требует синтаксис функции
(А если большой то тем более..):
HANDLE hCFGFILE = CreateFile(CONFIG_FILE_NAME.c_str(), GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
dwCFG_FILE_SIZE = GetFileSize(hCFGFILE,NULL);
if(hCFGFILE == INVALID_HANDLE_VALUE)
return ERR_LOAD_CFG_FILE;
HANDLE hCFGFILEMAP = CreateFileMapping(hCFGFILE, NULL, PAGE_WRITECOPY, 0, 0, NULL);
pbCFGFILE = (PBYTE)MapViewOfFile(hCFGFILEMAP, FILE_MAP_COPY,0 ,0 ,0);
(Сдеся чегото делаем........pbCFGFILE[iiiiii] = "";)
//Чистим за собой
UnmapViewOfFile(pbCFGFILE);
CloseHandle(hCFGFILEMAP);
CloseHandle(hCFGFILE);
kossak, у меня файл уже создан (file.text), в который мне нужно записать значение интовой переменной m. а то что вы написали, как-то слишком непонятно для меня... :)
спасибо! Но почему-то в первом случае записывыется в файл 4198400, независимо от значения данных (в моём случае - это число от нуля до 100);
а во втором ошибка в функции
Код:
FileWrite(iFileHandle, Edit1->Text, Edit1->Text.Length());
где указатель на данные, второй параметр, является AnsiString, а не const void, как требует синтаксис функции[/QUOTE]
Я забыл .c_str() добавить.
Код:
FileWrite(iFileHandle, Edit1->Text.c_str(), Edit1->Text.Length());
Хотя мне вообще не понятно, зачем используются именно FileOpen/FileWrite/FileClose, когда есть хорошо себя зарекомендовавшие POSIX-совместимые функции fopen/fprintf/fclose.
Plisteron, спасибо большое! всё работает! :)
Спасибо Джеффри Рихтеру. Учи мат часть.