PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → Leitura das unidades de disco e busca de diretórios específicos
Leitura das unidades de disco e busca de diretórios específicos
Débuté par Boller, 06 juin 2024 01:51 - Aucune réponse
Membre enregistré
3 667 messages
Popularité : +175 (223 votes)
Posté le 06 juin 2024 - 01:51
// Summary: <specify the procedure action>
// Syntax:
//Evento_Buscar_Wxs ()
//
// Parameters:
// None
// Example:
// <Specify a usage example>
//
// Return value:
PROCEDURE Evento_Buscar_Wxs()

Info("Esse procedimento pode demorar alguns","segundos ou ate minutos,","dependendo do computador.")

HourGlass(True)

//HDeleteAll(t006_paths_local)

TableDisplay(TABLE_T006_paths,taInit)

timeini is Time = TimeSys()

disco is string

discos is string = fListDisk()

qtdediscos is int = StringCount(discos,CR,IgnoreCase) + 1

DiretoriosRaiz is string = ""

u, x, y is int = 0

LOOP(qtdediscos)
u++
disco = ExtractString(discos,u,CR,FromBeginning)
DiretoriosRaiz = Lower(fListDirectory(disco,frNotRecursive))
passo_01_path_busca_raiz(DiretoriosRaiz)
PROGBAR()
END

TableDisplay(TABLE_T006_paths,taInit)

PROGBAR_100 = 100

timefim is Time = TimeSys()

//info(TimeDifference(timeini,timefim))

HourGlass(False)

ToastDisplay("Busca Finalizada!",toastLong,vaMiddle,haCenter,RGB(0,0,255))

INTERNAL PROCEDURE PROGBAR()
PROGBAR_100+=10
IF PROGBAR_100 >= 100 THEN
PROGBAR_100 = 0
END
END


INTERNAL PROCEDURE passo_01_path_busca_raiz(Diretorios_Raiz)

HourGlass(True)

IF Diretorios_Raiz = "" THEN
RETURN
END

qtde is int = StringCount(Diretorios_Raiz,CR,IgnoreCase)
diretorio is string
ok_pcsoft, ok_windev, ok_webdev, ok_mobile is boolean
subdiretorios01,subdiretorios02,subdiretorios03,subdiretorios04,subdiretorios05 is Variant

//Trace(Diretorios_Raiz)

x = 0

LOOP(qtde)

x++

PROGBAR()

diretorio = Lower(ExtractString(Diretorios_Raiz,x,CR,FromBeginning))

IF Contains(diretorio,"pc soft",IgnoreCase) = True OR
Contains(diretorio,"pc_soft",IgnoreCase) = True OR
Contains(diretorio,"pcsoft",IgnoreCase) = True OR
Contains(diretorio,"windev",IgnoreCase) = True OR
Contains(diretorio,"webdev",IgnoreCase) = True OR
Contains(diretorio,"mobile",IgnoreCase) = True

//pcsoft
IF Contains(diretorio,"pc soft",IgnoreCase) = True
ok_pcsoft = True
subdiretorios01 = Lower(fListDirectory(diretorio,frRecursive))
IF Contains(subdiretorios01,"pc soft",IgnoreCase) = True THEN
passo_02_path_busca_sub(subdiretorios01)
PROGBAR()
END
END

//pcsoft
IF Contains(diretorio,"pc_soft",IgnoreCase) = True
ok_pcsoft = True
subdiretorios02 = Lower(fListDirectory(diretorio,frRecursive))
IF Contains(subdiretorios02,"pc_soft",IgnoreCase) = True THEN
passo_02_path_busca_sub(subdiretorios02)
PROGBAR()
END
END

//pcsoft
IF Contains(diretorio,"pcsoft",IgnoreCase) = True
ok_pcsoft = True
subdiretorios03 = Lower(fListDirectory(diretorio,frRecursive))
IF Contains(subdiretorios03,"pcsoft",IgnoreCase) = True THEN
passo_02_path_busca_sub(subdiretorios03)
PROGBAR()
END
END

//windev
IF Contains(diretorio,"windev",IgnoreCase) = True
ok_windev = True
subdiretorios04 = Lower(fListDirectory(diretorio,frRecursive))
IF Contains(subdiretorios04,"windev",IgnoreCase) = True THEN
passo_02_path_busca_sub(subdiretorios04)
PROGBAR()
END
END

//webdev
IF Contains(diretorio,"webdev",IgnoreCase) = True
ok_webdev = True
subdiretorios04 = Lower(fListDirectory(diretorio,frRecursive))
IF Contains(subdiretorios04,"webdev",IgnoreCase) = True THEN
passo_02_path_busca_sub(subdiretorios04)
PROGBAR()
END
END

//mobile
IF Contains(diretorio,"windev",IgnoreCase) = True AND Contains(diretorio,"mobile",IgnoreCase) = True
ok_mobile = True
subdiretorios05 = Lower(fListDirectory(diretorio,frRecursive))
IF Contains(subdiretorios05,"mobile",IgnoreCase) = True THEN
passo_02_path_busca_sub(subdiretorios05)
PROGBAR()
END
END

END

END

END


INTERNAL PROCEDURE passo_02_path_busca_sub(subdiretorios)
HourGlass(True)

diretorio_n02 is string = ""
qtde is int = StringCount(subdiretorios,CR,IgnoreCase)

y = 0

IF subdiretorios <> "" THEN

LOOP(qtde)

y++

PROGBAR()

diretorio_n02 = Lower(ExtractString(subdiretorios,y,CR,FromBeginning))

//windev
IF (Contains(diretorio_n02,"windev",IgnoreCase) = True AND Contains(diretorio_n02,"programs",IgnoreCase) = True) OR
(Contains(diretorio_n02,"windev",IgnoreCase) = True AND Contains(diretorio_n02,"programmes",IgnoreCase) = True)

ok1 is boolean = Contains(diretorio_n02,"programs",IgnoreCase)
ok2 is boolean = Contains(diretorio_n02,"programmes",IgnoreCase)

IF ok1 = True OR ok2 = True THEN
passo_03_gravar_path(diretorio_n02)
Config_Grava("Versao_usada_windev",Busca_versao(diretorio_n02))
END
END

//webdev
IF (Contains(diretorio_n02,"webdev",IgnoreCase) = True AND Contains(diretorio_n02,"programs",IgnoreCase) = True) OR
(Contains(diretorio_n02,"webdev",IgnoreCase) = True AND Contains(diretorio_n02,"programmes",IgnoreCase) = True)

ok1 is boolean = Contains(diretorio_n02,"programs",IgnoreCase)
ok2 is boolean = Contains(diretorio_n02,"programmes",IgnoreCase)

IF ok1 = True OR ok2 = True THEN
passo_03_gravar_path(diretorio_n02)
Config_Grava("versao_usada_webdev",Busca_versao(diretorio_n02))
END
END

//mobile
IF (Contains(diretorio_n02,"windev",IgnoreCase) = True AND Contains(diretorio_n02,"mobile",IgnoreCase) = True AND Contains(diretorio_n02,"programs",IgnoreCase) = True) OR
(Contains(diretorio_n02,"windev",IgnoreCase) = True AND Contains(diretorio_n02,"mobile",IgnoreCase) = True AND Contains(diretorio_n02,"programmes",IgnoreCase) = True)

ok1 is boolean = Contains(diretorio_n02,"programs",IgnoreCase)
ok2 is boolean = Contains(diretorio_n02,"programmes",IgnoreCase)

IF ok1 = True OR ok2 = True THEN
passo_03_gravar_path(diretorio_n02)
Config_Grava("versao_usada_windev_mobile",Busca_versao(diretorio_n02))
END

END

END//loop

END

END


INTERNAL PROCEDURE passo_03_gravar_path(diretorio_localizado)
HourGlass(True)

PROGBAR()

isPrograms is boolean = False

ok1 is boolean = Contains(diretorio_localizado,"programs",IgnoreCase)
ok2 is boolean = Contains(diretorio_localizado,"programmes",IgnoreCase)

IF ok1 = True OR ok2 = True THEN

isPrograms = True

posicao_programs is int = 0

IF ok1 = True
posicao_programs = PositionOccurrence(diretorio_localizado,"programs",1,FromBeginning) + 8
ELSE IF ok2 = True
posicao_programs = PositionOccurrence(diretorio_localizado,"programmes",1,FromBeginning) + 10
END

diretorio_localizado = Middle(diretorio_localizado,1,posicao_programs)

HReset(t006_paths_local)
IF HReadSeek(t006_paths_local,t006_path,diretorio_localizado,hIdentical) = False THEN
t006_paths_local.t006_path = diretorio_localizado
t006_paths_local.t006_existe = True
HAdd(t006_paths_local)
TableDisplay(TABLE_T006_paths,taInit)
PROGBAR()
END

ELSE
isPrograms = False
END

END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/