home *** CD-ROM | disk | FTP | other *** search
/ Enter 1998 December / ENTER12_1.iso / Dema / Cad_Proj.ekt / Mega48t / CC / DATEIEN.C_ / DATEIEN.C
Encoding:
C/C++ Source or Header  |  1995-01-16  |  3.9 KB  |  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,"Dateiposition : %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,"Dateiposition : %ld Pos %d",fpos,pos);
  24.         Message("ML_Seek Fehler",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.     // Datei öffnen zum Schreiben und Lesen im Textmodus
  40.     fh = ML_Open("dummy.txt",ML_WRITE | ML_PLUS | ML_TEXT);
  41.  
  42.     // Handle anzeigen
  43.     sprintf(buf1,"%d",fh);
  44.     Message("Dateihandle :",buf1,NULL,NULL,"OK",3);
  45.  
  46.     // mit ML_Puts einen Text schreiben
  47.     strcpy(buf,"Werner");
  48.     cwritten = ML_Puts(buf,fh);
  49.     sprintf(buf1,"geschriebene Zeichen : %d",cwritten);
  50.     Message("ML_Puts",buf1,NULL,NULL,"OK",3);
  51.  
  52.     // mit ML_Tell die Dateiposition holen
  53.     fpos = ML_Tell(fh);
  54.     sprintf(buf1,"Dateiposition : %ld",fpos);
  55.     Message("ML_Tell",buf1,NULL,NULL,"OK",3);
  56.  
  57.     // Datei wieder auf Anfang
  58.     ML_Rewind(fh);
  59.     fpos = ML_Tell(fh);
  60.     sprintf(buf1,"Dateiposition : %ld",fpos);
  61.     Message("ML_Rewind",buf1,NULL,NULL,"OK",3);
  62.  
  63.     // mit ML_Gets den Text wieder einlesen
  64.     pbuf = ML_Gets(buf,20,fh);
  65.     sprintf(buf1,"gel : (%s) ret. Pointer : (%s)",buf,pbuf);
  66.     Message("ML_Gets",buf1,NULL,NULL,"OK",3);
  67.  
  68.     // 2 Zeichen vor Dateiende positionieren
  69.     fpos = ML_Tell(fh);
  70.     sprintf(buf1,"Dateiposition vor 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.     // wieder an das Dateiende gehen
  78.     cwritten = ML_Seek(fh,(0L),SEEK_END);
  79.     if(SeekMess(cwritten,2,fh))
  80.         return;
  81.  
  82.     // mit ML_Putc 1 Zeichen wegschreiben
  83.     cwritten = ML_Putc(fh,'a');
  84.     sprintf(buf1,"'a' geschrieben  Ret. Zeichen : %c",cwritten);
  85.     Message("ML_Putc",buf1,NULL,NULL,"OK",3);
  86.  
  87.     // mit ML_Getc das erste Zeichen der Datei lesen
  88.     ML_Rewind(fh);
  89.     cwritten = ML_Getc(fh);
  90.     sprintf(buf1,"Zeichen muß 'W' sein. Ret. Zeichen : %c",cwritten);
  91.     Message("ML_Getc",buf1,NULL,NULL,"OK",3);
  92.  
  93.     // wieder an das Dateiende gehen
  94.     cwritten = ML_Seek(fh,(0L),SEEK_END);
  95.     if(SeekMess(cwritten,3,fh))
  96.         return;
  97.  
  98.     fpos = ML_Tell(fh);
  99.     // mit ML_Write einen String mit 10 Zeichen rausschreiben
  100.     strcpy(buf,"HUGOvomORT");
  101.     cwritten = ML_Write(buf,10,fh);
  102.     sprintf(buf1,"%s geschrieben geschr.Zeichen : %d",buf,cwritten);
  103.     Message("ML_Write",buf1,NULL,NULL,"OK",3);
  104.  
  105.     // wieder auf den ANfang des neuen Textes positionieren.
  106.     cwritten = ML_Seek(fh,fpos,SEEK_SET);
  107.     if(SeekMess(0,4,fh))
  108.         return;
  109.     // mit ML_Read den Text einlesen, aber nur 8 Zeichen
  110.     cwritten = ML_Read(buf,8,fh);
  111.     buf[cwritten] = '\0'; // NULL terminieren, da ML_Read das nicht macht
  112.     sprintf(buf1,"Text :[%s] Ret:(%d)",buf,cwritten);
  113.     Message("ML_Read",buf1,NULL,NULL,"OK",3);
  114.  
  115.     // wieder an das Dateiende gehen
  116.     cwritten = ML_Seek(fh,(0L),SEEK_END);
  117.     if(SeekMess(cwritten,5,fh))
  118.         return;
  119.  
  120.     // mit ML_Printf die aktuelle Dateipos. rausschreiben
  121.     ML_Printf(fh,"%s : %ld","akt.Position",ML_Tell(fh));
  122.  
  123.     // Datei wieder schließen
  124.     ML_Close(fh);
  125. }
  126. /**********************************************************************/
  127.