//标准输入文件stdin,标准输出文件stdout,标准错误输出文件stderr,分别得到文件描述符 0, 1, 2 //创建、写入、读取文件。 //蔡军生 2007/10/21 QQ:9073204 深圳 void CreateFileDemo(void) { // HANDLE hFile = ::CreateFile(_T("CreateFileDemo.txt"), //创建文件的名称。 GENERIC_WRITE|GENERIC_READ, // 写和读文件。 0, // 不共享读写。 NULL, // 缺省安全属性。 CREATE_ALWAYS, // 如果文件存在,也创建。 FILE_ATTRIBUTE_NORMAL, // 一般的文件。 NULL); // 模板文件为空。 if (hFile == INVALID_HANDLE_VALUE) { // OutputDebugString(_T("CreateFile fail!/r/n")); } //往文件里写数据。 const int BUFSIZE = 4096; char chBuffer[BUFSIZE]; memcpy(chBuffer,"Test",4); DWORD dwWritenSize = 0; BOOL bRet = ::WriteFile(hFile,chBuffer,4,&dwWritenSize,NULL); if (bRet) { // OutputDebugString(_T("WriteFile 写文件成功/r/n")); } //先把写文件缓冲区的数据强制写入磁盘。 FlushFileBuffers(hFile); // //从文件里读取数据。 LONG lDistance = 0; DWORD dwPtr = SetFilePointer(hFile, lDistance, NULL, FILE_BEGIN); if (dwPtr == INVALID_SET_FILE_POINTER) { //获取出错码。 DWORD dwError = GetLastError() ; //处理出错。 } DWORD dwReadSize = 0; bRet = ::ReadFile(hFile,chBuffer,4,&dwReadSize,NULL); if (bRet) { // OutputDebugString(_T("ReadFile 读文件成功/r/n")); } else { //获取出错码。 DWORD dwError = GetLastError(); //处理出错。 TCHAR chErrorBuf[1024]; wsprintf(chErrorBuf,_T("GetLastError()=%d/r/n"),dwError); OutputDebugString(chErrorBuf); } } procedure write(str:string); Filestream : integer; begin Filestream := FileCreate(FileName); FileWrite(Filestream ,PCHAR(str)^,length(str)+1); end; procedure writeln(str:string); Filestream : integer; begin Filestream := FileCreate(FileName); FileWrite(Filestream ,PCHAR(str+chr($a))^,length(str)+1); end; 重定向rtl中的Output,然后Writleln就可以向文件输出了 比如: AssignFile(Output, 'debug.log'); Rewrite(Output); ... Writeln(blahblah); |
|