分享

delphi readline writeln stdout

 quasiceo 2013-12-21
 //标准输入文件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);                              

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多