Página 1 de 1

Função DiskFormat

Enviado: 28 Nov 2008 09:26
por DLZ
Bom dia..
Miggrei um programa de clipper para Xharbour e encontrei um probleminha.. No programa em Clipper eu utilizava a função Diskformat da CT.LIB para formatar um disquete. Essa mesma função existe no Xharbour, porém é apresentado na tela o processo da formatação, como se eu estivesse formatando pela linha de comando do prompt.. Mostra o percentual, depois pede volume. etc... Detonando as telas do sistema...
Isso tem solução ?? ou existe outra forma de formatar o disco no xharbour ??
Um abraço..

Re: Função DiskFormat

Enviado: 12 Jan 2009 12:55
por sygecom
Dercio,
Dando um pesquisada em uma função que inverta a possição dos cacter, acabei achando na libnf.lib(NANFOR), umas rotinas para disquete, só não testei, pode tentar testar para ver se tem algo que ajude, procure pelo aruivo FLOPTST.PRG nas CVS do xharbour.

Re: Função DiskFormat

Enviado: 27 Jan 2009 09:52
por DLZ
Ola Leandro.
Obrigado pela dica, mas essa lib só tem funções de verificação do disquete, tipo... Status do driver, Espaço disponível... etc.. Não achei nada que formate o disquete...

Re: Função DiskFormat

Enviado: 27 Jan 2009 10:47
por gvc
Do Manuel do xHarbour.
Veja se isto ajuda. Nunca usei, mas pela documentação é o que vc quer.
DiskFormat()
Formats a floppy disk.
Syntax
DiskFormat( [<cDrive>] , ;
[<nCapacity>] , ;
[<cUDF>] , ;
[<cBootText>] , ;
[<nRepetitions>], ;
[<cVolLabel>] , ;
[<lBoot>] , ;
[<lQuickFormat>] ) --> nErrorCode

Arguments
<cDrive>
This parameter specifies the floppy drive to use. It can be either an upper case A or B, indicating the drive letter. The default value is A.
<nCapacity>
An optional numeric value specifying the capacity of the floppy disk. It defaults to 0. Valid values are 160, 180, 320, 360, 640, 720, 1200, 1440 and 2880.
<cUDF>
This parameter exists for compatibility reasons but is ignored.
<cBootText>
This parameter exists for compatibility reasons but is ignored.
<nRepetitions>
This parameter exists for compatibility reasons but is ignored.
<cVolLabel>
An optional character string of max. 11 characters can be specified for the volume label of the floppy disk.
<lBoot>
This parameter exists for compatibility reasons but is ignored.
<lQuickFormat>
This parameter defaults to .F. (false). When set to .T. (true) the floppy disk is formatted in "quick format" mode. Return
The function returns a DosError() compatible error code as a numeric value. When the floppy disk is successfully formatted, the error code is zero.

Re: Função DiskFormat

Enviado: 27 Jan 2009 11:13
por DLZ
Ola GVC...
Eu já conheço essa função, inclusive a uso nos programas em clipper.. O problema é o seguinte:
No clipper, essa função é da CA-TOOLS e funciona perfeitamente, porém somente formata os discos com FAT32, impossibilitando copiar qualquer arquivo no windows XP por se tratar de NTFS.
No Xharbour essa função até formata com NTFS, porém ele apenas chama o Format do sistema operacional. É a mesma coisa que usar RUN Format a:
Dessa forma, o usuário tem que confirmar volume, confirmar se o disco está no drive, no final dizer se quer formatar outro disco, etc...

Re: Função DiskFormat

Enviado: 27 Jan 2009 15:12
por gvc
Os parâmetros no xHarbour não funcionam?

Re: Função DiskFormat

Enviado: 27 Jan 2009 16:21
por DLZ
Os parâmetros funcionama, só aparece todo o processo de formatação na tela como seu eu tivesse didigitado Format a: no prompt de comando do windows... Além de acabar com a telas do sistema, o usuário tem que ficar confirmando um monte de coisa..

Re: Função DiskFormat

Enviado: 27 Jan 2009 16:40
por Eolo
DLZ, uma sugestão meio doida, mas quem sabe não dá certo: e se você fizer um programa em Clipper, só com a formatação (usando a tal função da CATools que vc sabe que dá certo), e chamar esse EXE Clipper a partir do seu EXE xHarbour, usando o RUN?

Como talvez não dê para passar parâmetros entre um e outro EXE, vc faz Clipper formatar o disquete e depois gravar um TXT com a informação (OK ou Não OK). O xHarbour lê esse segundo arquivo e interage com o usuário (refazer etc.)

Re: Função DiskFormat

Enviado: 27 Jan 2009 17:27
por DLZ
Eolo.. eu já pensei em fazer isso, mas a função não funciona no Clipper qdo o windows é xp ou superior. O problema é o seguinte:
Na época em que a CA-TOOLS foi atualizada pela última vez, não existia outro tipo de partição que não o Fat32, então a função diskformat da Ca-Tools formata o disquete de forma fixa com FAT32. Se eu formato um disquete com Fat32 e tento copiar um arquivo para esse disco num windows XP intalado numa partição NTFS, da pau, não funciona.. No Xharbour essa função simplesmente invoca o Format do sistema operacional, ai formata no formato do windows, mas ai tem o problema da telas...
Não sei se me fiz entender..

Re: Função DiskFormat

Enviado: 27 Jan 2009 17:36
por Eolo
Estranho... uns dias atrás alguém me passou um EXE (o nome é Win98.exe) que formata disquetes sob o XP, mas para o Win98. Eu precisava desse disquete porque tava experimentando o VMWare e queria fazer um disco vistual do 98.

Então, se esse EXE formata um disqeute com FAT32 sob o XP, o CATools não deveria também? Você chegou a testar isso?

Se vc quiser, ma add no MSN, aí eu lhe mando esse Win98.exe.


COMPLEMENTANDO: joguei essa função DISKFORMAT() num programa em Clipper 52e / Blinker 7 / Modo Protegido, e ele fez a formatação do disquete sem problemas. Logo depois da formatação, ainda dentro do programa, mandei copiar um arquivo qualquer pro disquete e a cópia foi feita normalmente... E eu uso o XP.

Mais: fui no Windows Explorer e mandei ler e gravar coisas do/no disquete. Normal.

Re: Função DiskFormat

Enviado: 27 Jan 2009 23:27
por alaminojunior
... uns dias atrás alguém me passou um EXE (o nome é Win98.exe)
fui eu :))

Re: Função DiskFormat

Enviado: 28 Jan 2009 08:52
por Eolo
Ah, é! Foi o Alamino quem mandou.

Mas para o que o DLZ quer, nem esse Win98.exe nem o diskformat() do xHarbour resolvem, porque ambos pedem confirmações e mostram a evolução da formatação na tela, atrapalhando as telas do sistema dele.

Ao contrário, se fizer um "formata.exe" em Clipper, com a diskformat() do CATools Clipper, e chamar esse exe a partir do programa em XHarbour, resolve a parada. Testei aqui e funcionou.

Re: Função DiskFormat

Enviado: 17 Fev 2009 19:34
por Netavin
... Disquete ??
Amigos, o Marechal Deodoro ainda era cabo quando inventaram isso !!

[]´s
Netavin