home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 April / Chip_1997-04_cd.bin / prezent / cb / data.z / RENAME.ASM < prev    next >
Assembly Source File  |  1997-01-16  |  1KB  |  88 lines

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *     Delphi Runtime Library                          *
  5. ; *                            *
  6. ; *    Copyright (c) 1996 Borland International    *
  7. ; *                            *
  8. ; *******************************************************
  9.  
  10.     INCLUDE    SE.ASM
  11.     INCLUDE    FILEIO.ASM
  12.  
  13.     .386
  14.     .MODEL    FLAT
  15.  
  16.     EXTRN    MoveFileA:NEAR, GetLastError:NEAR, __PasToCStr:NEAR, SetInOutRes:NEAR
  17.  
  18.     PUBLIC    _Rename
  19.  
  20.     .CODE
  21.  
  22. ;    PROCEDURE _Rename( f: Text or File; newName: PChar );
  23.  
  24. _Rename    PROC
  25.  
  26. ; ->    EAX    Pointer to file variable
  27. ;    EDX    Pointer to new name
  28.  
  29.     CMP    [EAX].Mode,fmClosed
  30.     JNE    @@notAssigned
  31.  
  32.     TEST    EDX,EDX
  33.     JNE    @@notNull
  34.     MOV    EDX,offset @@nullByte
  35. @@notNull:
  36.  
  37.     LEA    EAX,[EAX].FileName
  38.     PUSH    EDX            ; save new name
  39.     PUSH    EAX            ; save old name
  40.  
  41.     PUSH    EDX
  42.     PUSH    EAX
  43.     CALL    MoveFileA
  44.     DEC    EAX
  45.     POP    EAX            ; restore old name
  46.     POP    EDX            ; restore new name
  47.     JNZ    @@error
  48.  
  49.     MOV    CH,fNameLen / 2
  50.  
  51. @@loop:
  52.     MOV    CL,[EDX]
  53.     INC    EDX
  54.     MOV    [EAX],CL
  55.     INC    EAX
  56.     TEST    CL,CL
  57.     JE    @@exit
  58.  
  59.     MOV    CL,[EDX]
  60.     INC    EDX
  61.     MOV    [EAX],CL
  62.     INC    EAX
  63.     TEST    CL,CL
  64.     JE    @@exit
  65.  
  66.     DEC    CH
  67.     JNE    @@loop
  68.  
  69.     MOV    [EAX],CH
  70. @@exit:
  71.     RET
  72.  
  73. @@error:
  74.     CALL    GetLastError
  75. @@errExit:
  76.     JMP     SetInOutRes
  77.  
  78. @@notAssigned:
  79.     MOV    EAX,102
  80.     JMP    @@errExit
  81.  
  82. @@nullByte:
  83.     db    0
  84.  
  85. _Rename    ENDP
  86.  
  87.     END
  88.