Programma di esempio TOSHORT.PRT
; TOSHORT
;
; Programma per Proteus
;
; (C) 2001-2003 Simone Zanella Productions
;
; Questo programma rinomina tutti i file corrispondenti alla specifica nel formato Dos (8 + 3 caratteri).

#!proteus -z

IF ISEMPTY(ARGV(5))
  CONSOLELN "Sintassi:  TOSHORT filespec"
  CONSOLELN ""
  CONSOLELN "Scopo: Converte tutti i nomi di file indicati in formato Dos (8 + 3 caratteri)."
  ABORT 0
FI

Path = SPLITPATH(ARGV(5))
H = DIROPEN(ARGV(5), 1)
F = IIF(NEQ(H, -1), 1, 0)
A = AVLNEW()
WHILE GT(F, 0)
  AVLSET(A, DIRLAST(H, 1), ".")
  F = DIRNEXT(H)
LOOP
DIRCLOSE(H)
AVLTRAVERSE(A, Rinomina)
ABORT 0


FUNCTION TrovaExt(nome)

P = STRRSTR(nome, ".")
IF NEQ(P, 0)
  RETURN LEFT(UPPER(STRTRAN(RESTFROM(nome, P), " ", "")), 4)
FI
RETURN ""


FUNCTION Rinomina(nome, trash)

lfnsource = _Path nome
ext = TrovaExt(nome)
nome = LEFT(STRTRAN(nome, " ", ""), 8)
dossource = _Path nome ext
pos = 1
WHILE ISFILE(dossource)
  IF LT(STRLEN(nome), 8)
    nome = nome "1"
    pos = 1
  ELSE  
    Z = LEFT(RIGHT(nome, pos), 1)
    IF LT(ASC(Z), ASC("Z"))
      N = INC(ASC(Z))
      IF LE(N, ASC("0"))
        N = ASC("1")
      ELSE
        IF AND(GT(N, ASC("9")), LT(N, ASC("A")))
          N = ASC("A")
        FI
      FI
      Z = CHR(N)
    ELSE          
      INC(@pos)
      CONTINUE
    FI
    nome = LEFT(nome, SUB(STRLEN(nome), pos)) Z RIGHT(nome, DEC(pos))
  FI
  dossource = _Path nome ext
LOOP
CONSOLELN dossource
FRENAME(lfnsource, dossource)
RETURN 0


FUNCTION SPLITPATH(pathname)

P = STRRSTR(pathname, "\\")
IF NEQ(P, 0)
  RETURN LEFT(pathname, P)
FI
RETURN ""
Indice esempi Prossimo esempio Esempio precedente Indice per argomenti Indice analitico