home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2001 December / pcwk12201b.iso / Reklamy / CAD-Projekt / MegaCAD-4_5 / CC / DATEIEN.C_ / DATEIEN.C
C/C++ Source or Header  |  1995-03-21  |  4KB  |  127 lines

  1. /**********************************************************************/
  2. #define SEEK_CUR 1
  3. #define SEEK_END 2
  4. #define SEEK_SET 0
  5.  
  6. #include "std.h"
  7. #include "megatyp.h"
  8. #include "megacad.h"
  9. /**********************************************************************/
  10. static short SeekMess(short cwritten,short pos,short fh)
  11. {
  12.     long fpos;
  13.     char buf1[255];
  14.     if( ! cwritten)
  15.     {
  16.         fpos = ML_Tell(fh);
  17.         sprintf(buf1,"file position : %ld Pos %d",fpos,pos);
  18.         Message("ML_Seek OK",buf1,NULL,NULL,"OK",3);
  19.         return(FALSE);
  20.     }
  21.     else
  22.     {
  23.         sprintf(buf1,"file position : %ld Pos %d",fpos,pos);
  24.         Message("ML_Seek Error",buf1,NULL,NULL,"OK",3);
  25.         ML_Close(fh);
  26.         return(TRUE);
  27.     }
  28. }
  29. /**********************************************************************/
  30. short main(
  31.         char *filename,
  32.         char *args )
  33. {
  34.     short fh, cwritten;
  35.     long fpos;
  36.     uint uread;
  37.     char buf[51], buf1[51], *pbuf;
  38.  
  39.     // open file for writing and reading in textmode
  40.     fh = ML_Open("dummy.txt",ML_WRITE | ML_PLUS | ML_TEXT);
  41.  
  42.     // show handle number
  43.     sprintf(buf1,"%d",fh);
  44.     Message("Dateihandle :",buf1,NULL,NULL,"OK",3);
  45.  
  46.     // write a text with ML_Puts
  47.     strcpy(buf,"Werner");
  48.     cwritten = ML_Puts(buf,fh);
  49.     sprintf(buf1,"written characters : %d",cwritten);
  50.     Message("ML_Puts",buf1,NULL,NULL,"OK",3);
  51.  
  52.     // get file position with ML_Tell
  53.     fpos = ML_Tell(fh);
  54.     sprintf(buf1,"file position : %ld",fpos);
  55.     Message("ML_Tell",buf1,NULL,NULL,"OK",3);
  56.  
  57.     // position filepointer on the start of file
  58.     ML_Rewind(fh);
  59.     fpos = ML_Tell(fh);
  60.     sprintf(buf1,"file position : %ld",fpos);
  61.     Message("ML_Rewind",buf1,NULL,NULL,"OK",3);
  62.  
  63.     // read the written text with ML_Gets
  64.     pbuf = ML_Gets(buf,20,fh);
  65.     sprintf(buf1,"read : (%s) ret. Pointer : (%s)",buf,pbuf);
  66.     Message("ML_Gets",buf1,NULL,NULL,"OK",3);
  67.  
  68.     // position filepointer 2 characters before the end of file
  69.     fpos = ML_Tell(fh);
  70.     sprintf(buf1,"file position before ML_Seek : %ld",fpos);
  71.     Message("ML_Seek",buf1,NULL,NULL,"OK",3);
  72.  
  73.     cwritten = ML_Seek(fh,(-2L),SEEK_END);
  74.     if(SeekMess(cwritten,1,fh))
  75.         return;
  76.  
  77.     // move filepointer to the end of file
  78.     cwritten = ML_Seek(fh,(0L),SEEK_END);
  79.     if(SeekMess(cwritten,2,fh))
  80.         return;
  81.  
  82.     // write one character with ML_Putc
  83.     cwritten = ML_Putc(fh,'a');
  84.     sprintf(buf1,"'a' written  ret.character : %c",cwritten);
  85.     Message("ML_Putc",buf1,NULL,NULL,"OK",3);
  86.  
  87.     // read the first character of the file with ML_Getc
  88.     ML_Rewind(fh);
  89.     cwritten = ML_Getc(fh);
  90.     sprintf(buf1,"character must be 'W'. ret. character : %c",cwritten);
  91.     Message("ML_Getc",buf1,NULL,NULL,"OK",3);
  92.  
  93.     // move filepointer to the end of file
  94.     cwritten = ML_Seek(fh,(0L),SEEK_END);
  95.     if(SeekMess(cwritten,3,fh))
  96.         return;
  97.  
  98.     fpos = ML_Tell(fh);
  99.     // write a 10 character long string with ML_Write
  100.     strcpy(buf,"HUGOvomORT");
  101.     cwritten = ML_Write(buf,10,fh);
  102.     sprintf(buf1,"%s written. written char.: %d",buf,cwritten);
  103.     Message("ML_Write",buf1,NULL,NULL,"OK",3);
  104.  
  105.     // move filepointer to the start of file
  106.     cwritten = ML_Seek(fh,fpos,SEEK_SET);
  107.     if(SeekMess(0,4,fh))
  108.         return;
  109.     // read the text with ML_Read but only 8 characters
  110.     cwritten = ML_Read(buf,8,fh);
  111.     buf[cwritten] = '\0'; // NULL terminate, ML_Read does not do it !!!
  112.     sprintf(buf1,"Text :[%s] ret:(%d)",buf,cwritten);
  113.     Message("ML_Read",buf1,NULL,NULL,"OK",3);
  114.  
  115.     // move filepointer to the end of file
  116.     cwritten = ML_Seek(fh,(0L),SEEK_END);
  117.     if(SeekMess(cwritten,5,fh))
  118.         return;
  119.  
  120.     // write the current fileposition with ML_Printf
  121.     ML_Printf(fh,"%s : %ld","cur.position",ML_Tell(fh));
  122.  
  123.     // close file
  124.     ML_Close(fh);
  125. }
  126. /**********************************************************************/
  127.