Função que retorna a capacidade do disquete
Precido de uma função que compare o tamanho de um arquivo txt com a capacidade disponivel em um disquete... Se a capacidade do disquete for maior salvo , caso o contrário, aborto e comunique que sera necessário outro disquete
Obrigado..
Obrigado..
Marco Salles
Curtidas 0
Respostas
Martins
31/10/2005
[quote:fe2838ca9f=´Marco Salles´]Precido de uma função que compare o tamanho de um arquivo txt com a capacidade disponivel em um disquete... Se a capacidade do disquete for maior salvo , caso o contrário, aborto e comunique que sera necessário outro disquete
Obrigado..[/quote:fe2838ca9f]
Marcos o disquete vazio tem uma capacidade fixa certo? Então não seria um opção vc verificar o tamanho dos arquivos q estiverem nesse disquete caso haja algum e subtrair da capacidade total do disquete comparando o saldo com o tamanho do seu arquivo texto, caso o disquete esteja vazio, é só verificar de o espaço disponível é menor do q seu arquivo texto, resguardando pq os tamanhos não podem ser iguais para evitar erro na leitura de header do disco.
Só uma idéia louca aqui, vou ver se isso na prática funciona.
Boa Sorte!!
Obrigado..[/quote:fe2838ca9f]
Marcos o disquete vazio tem uma capacidade fixa certo? Então não seria um opção vc verificar o tamanho dos arquivos q estiverem nesse disquete caso haja algum e subtrair da capacidade total do disquete comparando o saldo com o tamanho do seu arquivo texto, caso o disquete esteja vazio, é só verificar de o espaço disponível é menor do q seu arquivo texto, resguardando pq os tamanhos não podem ser iguais para evitar erro na leitura de header do disco.
Só uma idéia louca aqui, vou ver se isso na prática funciona.
Boa Sorte!!
GOSTEI 0
Massuda
31/10/2005
Já experimentou dar uma olhada nas funções DiskSize e DiskFree da unit SysUtils? Com elas você pode montar a rotina que você precisa.
GOSTEI 0
Martins
31/10/2005
Já experimentou dar uma olhada nas funções DiskSize e DiskFree da unit SysUtils? Com elas você pode montar a rotina que você precisa.
Mandou super bem [b:41aef9203b]Massuda[/b:41aef9203b], como sempre, hehehe :D
Dá para implementar algo bem interessante com DiskFree, DiskSize e pegando o tamnho do Arquivo, vai ficar Show!!!
GOSTEI 0
Adriano Santos
31/10/2005
Sendo mais detalhista, pegai.
procedure TForm1.Button1Click(Sender: TObject); var F : File of Byte; Tamanho : Longint; S : String; begin AssignFile(f, ´C:\Winnt\System32\Calc.exe´); Reset(F); Tamanho := FileSize(F); //Onde : 0 = Corrente, 1 = A, 2 = B,... if Tamanho < (DiskFree(0) div 1024) then ShowMessage(´Tamanho do Arquivo: ´ + IntToStr(Tamanho) + #1310 + ´Espaço em disco: ´ + IntToStr((DiskFree(0) div 1024)) + 1310 + ´Dá pra gravar´) else ShowMessage(´Disco cheio´); CloseFile(f); end;
GOSTEI 0
Marco Salles
31/10/2005
Obrigado a todos pela participação .
Mas na verdade eu estou querendo é comparar o tamanho de Uma lista do Tioi TStringList com o tamanho do espaço vazio do disquete.
Eu não sei qual a função que retorna o Tamano desta Lista
Tipo FileSize no caso de arquivos
Desde ja meus agadecimentos
Mas na verdade eu estou querendo é comparar o tamanho de Uma lista do Tioi TStringList com o tamanho do espaço vazio do disquete.
Eu não sei qual a função que retorna o Tamano desta Lista
Tipo FileSize no caso de arquivos
Desde ja meus agadecimentos
GOSTEI 0
Massuda
31/10/2005
[quote:fc3b545793=´Marco Salles´]Eu não sei qual a função que retorna o Tamano desta Lista [/quote:fc3b545793]Imaginando que você vai gravar a lista usando TStringList.SaveToFile, isso deve dar o tamanho do arquivo que será gravado...
var Tamanho: Integer; ... Tamanho := Length(SuaStringList.Text); ...
GOSTEI 0
Marco Salles
31/10/2005
Imaginando que você vai gravar a lista usando TStringList.SaveToFile, isso deve dar o tamanho do arquivo que será gravado...Código:
var
Tamanho: Integer;
...
Tamanho := Length(SuaStringList.Text);
Beleza massuda , mas da para comparar isto com DiskFree(0) div 1024
Com sugerido pelo Adriano santos sem perda de confiabilidade ???
var Tamanho: Integer; ... Tamanho := Length(SuaStringList.Text) if Tamanho < (DiskFree(0) div 1024) then ShowMessage(´Da para gravar´) else ShowMessage(´Disco cheio´);
GOSTEI 0
Adriano Santos
31/10/2005
[quote:604111efb7=´Marco Salles´]
Beleza massuda , mas da para comparar isto com DiskFree(0) div 1024
Com sugerido pelo Adriano santos sem perda de confiabilidade ???
[/quote:604111efb7]
Então [b:604111efb7]Marcos Salles[/b:604111efb7], não estou vendo dificuldades, pois as duas ´variáveis´, Tamanho e o resultado de DiskSize(0) div 1024, são do tipo Integer, isso significa que podem ser comparadas normalmente. Não entendi onde está sua preocupação ou dúvida.
Imaginando que você vai gravar a lista usando TStringList.SaveToFile, isso deve dar o tamanho do arquivo que será gravado...Código:
var
Tamanho: Integer;
...
Tamanho := Length(SuaStringList.Text);
Beleza massuda , mas da para comparar isto com DiskFree(0) div 1024
Com sugerido pelo Adriano santos sem perda de confiabilidade ???
var Tamanho: Integer; ... Tamanho := Length(SuaStringList.Text) if Tamanho < (DiskFree(0) div 1024) then ShowMessage(´Da para gravar´) else ShowMessage(´Disco cheio´);
Então [b:604111efb7]Marcos Salles[/b:604111efb7], não estou vendo dificuldades, pois as duas ´variáveis´, Tamanho e o resultado de DiskSize(0) div 1024, são do tipo Integer, isso significa que podem ser comparadas normalmente. Não entendi onde está sua preocupação ou dúvida.
GOSTEI 0
Marco Salles
31/10/2005
Então Marcos Salles, não estou vendo dificuldades, pois as duas ´variáveis´, Tamanho e o resultado de DiskSize(0) div 1024, são do tipo Integer, isso significa que podem ser comparadas normalmente. Não entendi onde está sua preocupação ou dúvida.
A unica duvida é que apesar de integer e Longint ser definido entre o mesmo intervalo , qual é a diferença real entre essas duas definiçoes . Pois
var tamanho:Integer; OutroTipo:Longint; .... tamanho:=(DiskFree(0) div 1024); OutroTipo:=(DiskFree(0) div 1024);
[b:97c7f88392]Aparentemente é a mesma coisa.. [/b:97c7f88392]Então o p orque destas duas definiçoes :?: :?: :?: :?:
GOSTEI 0
Massuda
31/10/2005
[quote:69db0e9169=´Marco Salles´][/quote:69db0e9169]Delphi define Integer como sendo o formato inteiro nativo da máquina de modo que, atualmente, Integer é igual a Longint (inteiro com sinal 32 bits). No tempo do Delphi 1, Integer era igual a Smallint (inteiro com sinal 16 bits). Num futuro próximo, Integer será igual ao atual Int64 (inteiro com sinal 64 bits).
Em outras palavras, Integer é um tipo de dado que depende da implementação do compilador, enquanto Shortint, Smallint, Longint, Int64, Byte, Word e Longword são tipos de dado cujo tamanho/capacidade são pré-definidos.
No código que você postou, tem outro ponto importante: a variável Tamanho contem um valor em bytes (resultado do Length) enquanto o (DiskFree(0) div 1024) resulta em um valor em kilobytes, ou seja, você está comparando coisas diferentes.
O correto seria, ou dividir tamanho por 1024 ou simplesmente usar o valor retornado por DiskFree sem dividir por 1024.
... Tamanho := Length(SuaStringList.Text) if Tamanho < (DiskFree(0) div 1024) then ...
Em outras palavras, Integer é um tipo de dado que depende da implementação do compilador, enquanto Shortint, Smallint, Longint, Int64, Byte, Word e Longword são tipos de dado cujo tamanho/capacidade são pré-definidos.
No código que você postou, tem outro ponto importante: a variável Tamanho contem um valor em bytes (resultado do Length) enquanto o (DiskFree(0) div 1024) resulta em um valor em kilobytes, ou seja, você está comparando coisas diferentes.
O correto seria, ou dividir tamanho por 1024 ou simplesmente usar o valor retornado por DiskFree sem dividir por 1024.
GOSTEI 0
Adriano Santos
31/10/2005
[quote:56c1803e85=´Marco Salles´]
Delphi define Integer como sendo o formato inteiro nativo da máquina de modo que, atualmente, Integer é igual a Longint (inteiro com sinal 32 bits). No tempo do Delphi 1, Integer era igual a Smallint (inteiro com sinal 16 bits). Num futuro próximo, Integer será igual ao atual Int64 (inteiro com sinal 64 bits).... Tamanho := Length(SuaStringList.Text) if Tamanho < (DiskFree(0) div 1024) then ...
Em outras palavras, Integer é um tipo de dado que depende da implementação do compilador, enquanto Shortint, Smallint, Longint, Int64, Byte, Word e Longword são tipos de dado cujo tamanho/capacidade são pré-definidos.
No código que você postou, tem outro ponto importante: a variável Tamanho contem um valor em bytes (resultado do Length) enquanto o (DiskFree(0) div 1024) resulta em um valor em kilobytes, ou seja, você está comparando coisas diferentes.
O correto seria, ou dividir tamanho por 1024 ou simplesmente usar o valor retornado por DiskFree sem dividir por 1024.[/quote:56c1803e85]
[b:56c1803e85]Massuda[/b:56c1803e85] boa explicação. Tive a impressão de que estávamos criando uma tempestade em copo d´água no meu post anterior.
GOSTEI 0
Marco Salles
31/10/2005
Tive a impressão de que estávamos criando uma tempestade em copo d´água no meu post anterior.
[b:9a2b4dabc6]Pelo que me foi passado , achei tb que seria fácil resolução.. [/b:9a2b4dabc6]A unica duvida que tinha ficado foi quanto a definição de tipos Integer e longint
Mas na pratica quando tento gravar um arquivo txt em um disquete que [size=18:9a2b4dabc6]esta cheio [/size:9a2b4dabc6], a comparação
[b:9a2b4dabc6]if Tamanho < (DiskFree(0) div 1024) then [/b:9a2b4dabc6]
:arrow: :arrow: :arrow:
[b:9a2b4dabc6][color=darkred:9a2b4dabc6]Esta retornando verdadeiro . Quando eu esperava que retornasse falso...[/color:9a2b4dabc6][/b:9a2b4dabc6]
Segue um Fragmento do meu código ::::::::::::::::::::::::::
var Tamanho: Integer; Lista:TStringLista; FileName:String; LogFile: TextFile; ... // Crio a Lista e coloco dados nela , blablabla... Tamanho := Length(Lista.Text) if Tamanho < (DiskFree(0) div 1024) then begin FileName:=´A:\TesteEmDelphi.txt; AssignFile (LogFile, Filename); Lista.SaveToFile(FileName); end else ShowMessage(´Disco cheio´);
:cry: :cry: :cry: :cry: :cry:
Como o Disco [size=18:9a2b4dabc6]esta cheio[/size:9a2b4dabc6] e o teste[b:9a2b4dabc6] if Tamanho < (DiskFree(0) div 1024) then [/b:9a2b4dabc6]não esta filtrando esta condição , obtenho um erro , quando tento fazer : :arrow: :arrow: :arrow:
[b:9a2b4dabc6]Lista.SaveToFile(FileName);[/b:9a2b4dabc6]
O Erro que obtenho é este :
[URL=http://imageshack.us][img:9a2b4dabc6]http://img176.imageshack.us/img176/3507/imagemdisquetecheio7gj.jpg[/img:9a2b4dabc6][/URL]
:?: :?: :?: :?: :?:
Pergunto então ::: O Que estou fazendo de errado , o que não estou fazendo , e sera que dá para confiar nesse teste
Tamanho := Length(Lista.Text) if Tamanho < (DiskFree(0) div 1024) then
:?: :?: :?: :?: :?: :?:
GOSTEI 0
Massuda
31/10/2005
Notei que seu código de gravação está errado... se estiver usando TStringList.SaveToFile, voê não precisa do AssignFile (assim como não precisa de qualquer outra função de manipulação de arquivos). Ficaria algo assim......Fora isso, o teste Tamanho < DiskFree(0) só faz sentido se você estiver gravando um novo arquivo em cada tentativa; caso contrário, o melhor é excluir o arquivo existente para ter um valor de DiskFree correto no teste.
var Tamanho: Integer; Lista:TStringList; FileName:String; ... // Crio a Lista e coloco dados nela , blablabla... Tamanho := Length(Lista.Text) if Tamanho < DiskFree(0) then begin FileName:=´A:\TesteEmDelphi.txt; Lista.SaveToFile(FileName); end else ShowMessage(´Disco cheio´);
GOSTEI 0
Martins
31/10/2005
Iria sugerir mais ou menos isso q o [b:9eb9713b69]Massuda[/b:9eb9713b69], postou, não esatamente com tantos detalhes, outra coisa, [b:9eb9713b69]Marco[/b:9eb9713b69], vc vai gravar em disquete não é isso? pois bem, o parametro passado para [b:9eb9713b69]DiskFree[/b:9eb9713b69] está errado se for para verificar o disquete, pq deveria estar assim [b:9eb9713b69]DiskFree(1)[/b:9eb9713b69]. Ou então estou sem entender a situação.
Parametros do [b:9eb9713b69]DiskFree:[/b:9eb9713b69]
[color=darkred:9eb9713b69]
0 = Corrente
1 = A
2 = B
[/color:9eb9713b69]
Parametros do [b:9eb9713b69]DiskFree:[/b:9eb9713b69]
[color=darkred:9eb9713b69]
0 = Corrente
1 = A
2 = B
[/color:9eb9713b69]
GOSTEI 0
Martins
31/10/2005
Iria sugerir mais ou menos isso q o [b:1e16be4704]Massuda[/b:1e16be4704], postou, não esatamente com tantos detalhes, outra coisa, [b:1e16be4704]Marco[/b:1e16be4704], vc vai gravar em disquete não é isso? pois bem, o parametro passado para [b:1e16be4704]DiskFree[/b:1e16be4704] está errado se for para verificar o disquete, pq deveria estar assim [b:1e16be4704]DiskFree(1)[/b:1e16be4704]. Ou então estou sem entender a situação.
Parametros do [b:1e16be4704]DiskFree:[/b:1e16be4704]
[color=darkred:1e16be4704]
0 = Corrente
1 = A
2 = B
[/color:1e16be4704]
Parametros do [b:1e16be4704]DiskFree:[/b:1e16be4704]
[color=darkred:1e16be4704]
0 = Corrente
1 = A
2 = B
[/color:1e16be4704]
GOSTEI 0
Adriano Santos
31/10/2005
Iria sugerir mais ou menos isso q o Massuda, postou, não esatamente com tantos detalhes, outra coisa, Marco, vc vai gravar em disquete não é isso? pois bem, o parametro passado para DiskFree está errado se for para verificar o disquete, pq deveria estar assim DiskFree(1). Ou então estou sem entender a situação.
Parametros do DiskFree:
0 = Corrente
1 = A
2 = B
Foi o que eu postei lá em cima logo no comecinho da discussão.
[quote:e5b9054df6=´Adriano Santos´]Sendo mais detalhista, pegai.
[quote=Adriano Santos]
procedure TForm1.Button1Click(Sender: TObject);
var
F : File of Byte;
Tamanho : Longint;
S : String;
begin
AssignFile(f, ´C:\Winnt\System32\Calc.exe´);
Reset(F);
Tamanho := FileSize(F);
[b:e5b9054df6][color=red:e5b9054df6]//Onde : 0 = Corrente, 1 = A, 2 = B,...[/color:e5b9054df6][/b:e5b9054df6]
if Tamanho < (DiskFree(0) div 1024) then
ShowMessage(´Tamanho do Arquivo: ´ + IntToStr(Tamanho) + #1310 + ´Espaço em disco: ´ +
IntToStr((DiskFree(0) div 1024)) + 1310 + ´Dá pra gravar´)
else
ShowMessage(´Disco cheio´);
CloseFile(f);
end;
[/quote:e5b9054df6]
GOSTEI 0
Martins
31/10/2005
[quote:7dcc07a5a2=´Adriano Santos´]
Foi o que eu postei lá em cima logo no comecinho da discussão.
[quote:7dcc07a5a2=´Adriano Santos´]Sendo mais detalhista, pegai.
[quote=Adriano Santos]
procedure TForm1.Button1Click(Sender: TObject);
var
F : File of Byte;
Tamanho : Longint;
S : String;
begin
AssignFile(f, ´C:\Winnt\System32\Calc.exe´);
Reset(F);
Tamanho := FileSize(F);
[b:7dcc07a5a2][color=red:7dcc07a5a2]//Onde : 0 = Corrente, 1 = A, 2 = B,...[/color:7dcc07a5a2][/b:7dcc07a5a2]
if Tamanho < (DiskFree(0) div 1024) then
ShowMessage(´Tamanho do Arquivo: ´ + IntToStr(Tamanho) + #1310 + ´Espaço em disco: ´ +
IntToStr((DiskFree(0) div 1024)) + 1310 + ´Dá pra gravar´)
else
ShowMessage(´Disco cheio´);
CloseFile(f);
end;
[/quote:7dcc07a5a2][/quote:7dcc07a5a2]
Exatamente [b:7dcc07a5a2]Adriano[/b:7dcc07a5a2], desculpe não havia lido seu post inteiro antes, talvez sejam detalhes a serem vistos.
Boa sorte Marco Salles
Iria sugerir mais ou menos isso q o Massuda, postou, não esatamente com tantos detalhes, outra coisa, Marco, vc vai gravar em disquete não é isso? pois bem, o parametro passado para DiskFree está errado se for para verificar o disquete, pq deveria estar assim DiskFree(1). Ou então estou sem entender a situação.
Parametros do DiskFree:
0 = Corrente
1 = A
2 = B
Foi o que eu postei lá em cima logo no comecinho da discussão.
[quote:7dcc07a5a2=´Adriano Santos´]Sendo mais detalhista, pegai.
[quote=Adriano Santos]
procedure TForm1.Button1Click(Sender: TObject);
var
F : File of Byte;
Tamanho : Longint;
S : String;
begin
AssignFile(f, ´C:\Winnt\System32\Calc.exe´);
Reset(F);
Tamanho := FileSize(F);
[b:7dcc07a5a2][color=red:7dcc07a5a2]//Onde : 0 = Corrente, 1 = A, 2 = B,...[/color:7dcc07a5a2][/b:7dcc07a5a2]
if Tamanho < (DiskFree(0) div 1024) then
ShowMessage(´Tamanho do Arquivo: ´ + IntToStr(Tamanho) + #1310 + ´Espaço em disco: ´ +
IntToStr((DiskFree(0) div 1024)) + 1310 + ´Dá pra gravar´)
else
ShowMessage(´Disco cheio´);
CloseFile(f);
end;
[/quote:7dcc07a5a2][/quote:7dcc07a5a2]
Exatamente [b:7dcc07a5a2]Adriano[/b:7dcc07a5a2], desculpe não havia lido seu post inteiro antes, talvez sejam detalhes a serem vistos.
Boa sorte Marco Salles
GOSTEI 0
Adriano Santos
31/10/2005
Sem problemas [b:260fc10d81]Martins[/b:260fc10d81], também dei mancada, poderia ter colocado o exemplo já com o parâmetro correto no DiskFree;
[quote:260fc10d81=´Adriano Santos´]
procedure TForm1.Button1Click(Sender: TObject);
var
F : File of Byte;
Tamanho : Longint;
S : String;
begin
AssignFile(f, ´C:\Winnt\System32\Calc.exe´);
Reset(F);
Tamanho := FileSize(F);
[b:260fc10d81][color=red:260fc10d81]//Onde : 0 = Corrente, 1 = A, 2 = B,...[/color:260fc10d81][/b:260fc10d81]
if Tamanho < ([color=green:260fc10d81][b:260fc10d81]DiskFree(1)[/b:260fc10d81][/color:260fc10d81] div 1024) then
ShowMessage(´Tamanho do Arquivo: ´ + IntToStr(Tamanho) + #1310 + ´Espaço em disco: ´ +
IntToStr((DiskFree(0) div 1024)) + 1310 + ´Dá pra gravar´)
else
ShowMessage(´Disco cheio´);
CloseFile(f);
end;
[/quote:260fc10d81]
[quote:260fc10d81=´Adriano Santos´]
procedure TForm1.Button1Click(Sender: TObject);
var
F : File of Byte;
Tamanho : Longint;
S : String;
begin
AssignFile(f, ´C:\Winnt\System32\Calc.exe´);
Reset(F);
Tamanho := FileSize(F);
[b:260fc10d81][color=red:260fc10d81]//Onde : 0 = Corrente, 1 = A, 2 = B,...[/color:260fc10d81][/b:260fc10d81]
if Tamanho < ([color=green:260fc10d81][b:260fc10d81]DiskFree(1)[/b:260fc10d81][/color:260fc10d81] div 1024) then
ShowMessage(´Tamanho do Arquivo: ´ + IntToStr(Tamanho) + #1310 + ´Espaço em disco: ´ +
IntToStr((DiskFree(0) div 1024)) + 1310 + ´Dá pra gravar´)
else
ShowMessage(´Disco cheio´);
CloseFile(f);
end;
[/quote:260fc10d81]
GOSTEI 0
Marco Salles
31/10/2005
massuda escreveu :
Certo massuda.. Coloquei o fragmento de codigo de cabeça e isto me passsou despercebido.. Muito obrigado pela colocação
Martins escreveu
Adriano escreveu
eu tb entrei de gaiato nessa ... Ma agora ta tudo resolvido , o erro foi devido a um parametro errado passado..
Muitissimo obrigado a todos.
se estiver usando TStringList.SaveToFile, voê não precisa do AssignFile (assim como não precisa de qualquer outra função de manipulação de arquivos). Ficaria algo assim...
Certo massuda.. Coloquei o fragmento de codigo de cabeça e isto me passsou despercebido.. Muito obrigado pela colocação
Martins escreveu
pois bem, o parametro passado para DiskFree está errado se for para verificar o disquete, pq deveria estar assim DiskFree(1). Ou então estou sem entender a situação.
Adriano escreveu
Sem problemas Martins, também dei mancada, poderia ter colocado o exemplo já com o parâmetro correto no DiskFree;
eu tb entrei de gaiato nessa ... Ma agora ta tudo resolvido , o erro foi devido a um parametro errado passado..
Muitissimo obrigado a todos.
GOSTEI 0
Martins
31/10/2005
[quote:f4d1dec7db=´Marco Salles´]massuda escreveu :
Certo massuda.. Coloquei o fragmento de codigo de cabeça e isto me passsou despercebido.. Muito obrigado pela colocação
Martins escreveu
Adriano escreveu
eu tb entrei de gaiato nessa ... Ma agora ta tudo resolvido , o erro foi devido a um parametro errado passado..
Muitissimo obrigado a todos.[/quote:f4d1dec7db]
Blz [b:f4d1dec7db]Marco[/b:f4d1dec7db], agora é só mandar ficha aí no seu programa, boa sorte!!.
[b:f4d1dec7db]Curiosidade:[/b:f4d1dec7db] Era só o parametro do DiskFree()?
Valew!!!
se estiver usando TStringList.SaveToFile, voê não precisa do AssignFile (assim como não precisa de qualquer outra função de manipulação de arquivos). Ficaria algo assim...
Certo massuda.. Coloquei o fragmento de codigo de cabeça e isto me passsou despercebido.. Muito obrigado pela colocação
Martins escreveu
pois bem, o parametro passado para DiskFree está errado se for para verificar o disquete, pq deveria estar assim DiskFree(1). Ou então estou sem entender a situação.
Adriano escreveu
Sem problemas Martins, também dei mancada, poderia ter colocado o exemplo já com o parâmetro correto no DiskFree;
eu tb entrei de gaiato nessa ... Ma agora ta tudo resolvido , o erro foi devido a um parametro errado passado..
Muitissimo obrigado a todos.[/quote:f4d1dec7db]
Blz [b:f4d1dec7db]Marco[/b:f4d1dec7db], agora é só mandar ficha aí no seu programa, boa sorte!!.
[b:f4d1dec7db]Curiosidade:[/b:f4d1dec7db] Era só o parametro do DiskFree()?
Valew!!!
GOSTEI 0
Marco Salles
31/10/2005
Curiosidade: Era só o parametro do DiskFree()?
No caso do erro apresentado foi.. Com eu disse antes , eu entrei de gaiato no post colacado pelo adriano , onde ele usou o paremetro do diretorio corrente.. E~u não percebi e deu no que deu.
Mas para esclarecer tudo , volto no post do massuda , que refere ao uso ou não da divisão po 1024
massuda postou
No código que você postou, tem outro ponto importante: a variável Tamanho contem um valor em bytes (resultado do Length) enquanto o (DiskFree(0) div 1024) resulta em um valor em kilobytes, ou seja, você está comparando coisas diferentes.
O correto seria, ou dividir tamanho por 1024 ou simplesmente usar o valor
Então ao inves de usar
var
Tamanho: Integer;
Lista:TStringLista;
FileName:String;
LogFile: TextFile;
...
// Crio a Lista e coloco dados nela , blablabla...
Tamanho := Length(Lista.Text)
if Tamanho < (DiskFree(0) div 1024) then
begin
FileName:=´A:\TesteEmDelphi.txt;
AssignFile (LogFile, Filename);
Lista.SaveToFile(FileName);
end
else
ShowMessage(´Disco cheio´);
[b:9f5b2bf87b][color=darkred:9f5b2bf87b][size=18:9f5b2bf87b]O Correto sderia isto[/size:9f5b2bf87b][/color:9f5b2bf87b][/b:9f5b2bf87b]
var Tamanho: Integer; Lista:TStringLista; FileName:String; LogFile: TextFile; ... // Crio a Lista e coloco dados nela , blablabla... Tamanho := Length(Lista.Text) if Tamanho < (DiskFree(0) ) then begin FileName:=´A:\TesteEmDelphi.txt; AssignFile (LogFile, Filename); Lista.SaveToFile(FileName); end else ShowMessage(´Disco cheio´);
Seria isto mesmo :?: :?: :?: :?:
[size=12:9f5b2bf87b][/size:9f5b2bf87b]
GOSTEI 0
Martins
31/10/2005
Blz grande [b:1c400876b0]Marco Salles[/b:1c400876b0]!!!
Acho q segundo o q foi postado pelo [b:1c400876b0]Massuda[/b:1c400876b0] seria isso mesmo.
Boa sorte
var Tamanho: Integer; Lista:TStringLista; FileName:String; LogFile: TextFile; ... // Crio a Lista e coloco dados nela , blablabla... Tamanho := Length(Lista.Text) if Tamanho < (DiskFree(1) ) then begin FileName:=´A:\TesteEmDelphi.txt; AssignFile (LogFile, Filename); Lista.SaveToFile(FileName); end else ShowMessage(´Disco cheio´);
Acho q segundo o q foi postado pelo [b:1c400876b0]Massuda[/b:1c400876b0] seria isso mesmo.
Boa sorte
GOSTEI 0