EnglishРусский  

   ..

   gea.g

   gead.g

   geademo.g

   geae.g

   geafile.g

Реклама

Инсталлятор CreateInstall
Бесплатные и коммерческие инсталляторы

source\lib\gea\geademo.g
  1 /******************************************************************************
  2 *
  3 * Copyright (C) 2009, The Gentee Group. All rights reserved. 
  4 * This file is part of the Gentee open source project - http://www.gentee.com. 
  5 * 
  6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT"). 
  7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS 
  8 * ACCEPTANCE OF THE AGREEMENT.
  9 *
 10 * Author: Alexey Krivonogov ( gentee )
 11 *
 12 ******************************************************************************/
 13 
 14 include
 15 {
 16    $"gea.g" 
 17 }
 18 
 19 func uint userfunc( uint code, geaparam param  )
 20 {
 21    if code < $GEAERR_LAST
 22    {
 23       print( "ERROR: ")
 24    }
 25    switch code
 26    {
 27       case $GEAERR_PATTERN
 28       {
 29          print( "Wrong pattern name: \(param.name)\n")     
 30       }
 31       case $GEAERR_FILEOPEN
 32       {
 33          switch conrequest( "Cannot open file: \(param.name) (Abort|Retry|Ignore)", "Aa|Rr|Ii" )
 34          {
 35             case 0 : return $GEA_ABORT
 36             case 1 : return $GEA_RETRY
 37             case 2 : return $GEA_IGNORE
 38          }  
 39       }
 40       case $GEAERR_FILEWRITE
 41       {
 42          switch conrequest( "Cannot write file: \(param.name) (Abort|Retry)", "Aa|Rr" )
 43          {
 44             case 0 : return $GEA_ABORT
 45             case 1 : return $GEA_RETRY
 46          }  
 47       }      
 48       case $GEAERR_FILEREAD
 49       {
 50          switch conrequest( "Cannot read file: \(param.name) (Abort|Retry)", "Aa|Rr" )
 51          {
 52             case 0 : return $GEA_ABORT
 53             case 1 : return $GEA_RETRY
 54          }  
 55       }      
 56       case $GEAERR_TOOBIG
 57       {
 58          switch conrequest( "Cannot pack too big file: \(param.name) (Abort|Ignore)", "Aa|Ii" )
 59          {
 60             case 0 : return $GEA_ABORT
 61             case 1 : return $GEA_IGNORE
 62          }
 63       }
 64       case $GEAERR_MANYVOLUMES
 65       {
 66          print( "Too many volumes: \(param.name)\n")     
 67       }      
 68       case $GEAERR_NOTGEA
 69       {
 70          print( "The file \(param.name) is not GEA archive\n")     
 71       }
 72       case $GEAERR_WRONGVOLUME
 73       {
 74          print( "The file \(param.name) is the wrong GEA volume\n")     
 75       }
 76       case $GEAERR_WRONGSIZE
 77       {
 78          print( "The GEA file \(param.name) is less then it should be." )
 79       }
 80       case $GEAERR_INTERNAL
 81       {
 82          print( "The internal error \(param.info) in the file \(param.name)\n")      }
 83       case $GEAERR_CRC
 84       {
 85          print( "The file \(param.info->geafile.name ) has a wrong CRC\n")
 86       }
 87       case $GEAMESS_BEGIN
 88       {
 89          print( "Creating GEA file: \(param.name)\n")     
 90       }
 91       case $GEAMESS_END
 92       {
 93          print( "GEA file was created successfully\n")     
 94       }
 95       case $GEAMESS_COPY
 96       {
 97          print( "Duplicate: \(param.name)\n")     
 98       }
 99       case $GEAMESS_ENBEGIN
100       {
101          print( "Packing: \(param.name)\r")     
102       }
103       case $GEAMESS_DEBEGIN
104       {
105          print( "Unpacking: \(param.info->geafile.subfolder)\\\(param.info->geafile.name)\r")     
106       }
107       case $GEAMESS_WRITEHEAD
108       {
109          print( "Writing GEA header...\n")     
110       }
111       case $GEAMESS_DEEND
112       {
113          print( "\(param.info->geafile.subfolder)\\\(param.info->geafile.name) \(param.info->geafile.compsize) to \(param.info->geafile.size)\n")     
114       }
115       case $GEAMESS_ENEND
116       {
117          print( "\(param.name)  \(param.info->geafile.size) to \(param.info->geafile.compsize)      \n")     
118       }
119       case $GEAMESS_PROCESS
120       {
121          if param.mode
122          {
123             print("\(param.info->geafile.name) \(long( param.process + param.done ) * 100L / long( param.info->geafile.size ))% \r")
124          }
125          else
126          {
127             print("\(param.name) \(long( param.process + param.done ) * 100L / long( param.info->geafile.size ))% \r")
128          }
129       }
130       case $GEAMESS_WRONGVER
131       {
132          switch conrequest( "The file \(param.name) has the unsupported GEA format version (Abort|Ignore)", "Aa|Ii" )
133          {
134             case 0 : return $GEA_ABORT
135             case 1 : return $GEA_IGNORE
136          }   
137       }
138       case $GEAMESS_GETVOLUME
139       {
140 /*         uint disktype
141          drivename.substr( diskname, 0, 3 )
142          disktype = getdrivetype( drivename )
143          if disktype == $DRIVE_REMOVABLE || disktype == $DRIVE_CDROM
144          {
145             if this.mess( $GEAMESS_GETVOLUME, %{ diskname, num + 1 }) ==
146                 $GEA_ABORT : return 0 
147          }*/
148          return $GEA_OK         
149       }
150    }
151    if code < $GEAERR_LAST : return 0
152    return 1
153 }
154 
155 func test<main>
156 {
157    geaeinit  geai
158    geae     gpack
159    ffind    fd
160    geacomp  gc
161    
162    geai.userfunc = &userfunc
163    geai.flags |= $GEAI_IGNORECOPY
164    geai.volsize = 100L * 1024L//0L//0x50000L
165    geai.pattern = "test.g%02u"
166    gpack.create( "c:\\setups\\test.gea", geai )
167    fd.init( "c:\\temp\\g\\*.*", $FIND_FILE )
168    gc.compmethod = $GEA_STORE//$GEA_PPMD//$GEA_LZGE//$GEA_PPMD
169    gc.order = 1
170    gc.solid = 1
171 //   gc.password = "ok"
172    foreach cur, fd
173    {
174       gpack.add( cur.fullname, gc )
175    }
176    gpack.close()
177    
178    geadinit geadi
179    gead     gunpack
180    uint     i
181    
182    geadi.userfunc = &userfunc
183    geadi.geaoff = 0//0x18963
184    print("Test GEA archive ================================\n")
185    gunpack.open( "c:\\setups\\test.gea", geadi )
186 //   gunpack.open( "c:\\setups\\disk1.pak", geadi )
187    fornum i, *gunpack.fileinfo
188    {
189       if !gunpack.test( i ) : print("Error testing...\n")
190    }
191 
192    congetch( "Press any key..." )
193 }
Редактировать