CONTAR LINHAS EM UM ARQUIVO TXT
Como contar as linhas de um arquivo txt? Como redimensionar o tamanho da fonte qdo o texto ultrapassar o tamanho do form?
a primeira parte:
vc abre o arquivo e conta a ocorrencia de vbcrlf's no arquivo (contando apenas a quantidade de vbLF ja deve ser o suficiente)
dim Texto as string
dim i as byte
dim Arquivo as string
arquivo = app.path & "\MyArquivo"
texto = string(FileLen(Arquivo),chr$(0))
i=freefile
open Arquivo for input as #i
texto = input(#i,filelen(#i)) 'nao estou com meu vb aki - mas acredito que seja essa sintaxe
close #i
tamanho = len(texto) - len(replace(texto,vblf,""))
com relacao ao redimensionamento da fonte - vc diz exatamente doq? vc esta escrevendo isso onde?
de qualquer forma - talvez seja interessante considerar a possibilidade de usar um richtextbox - nunca tive problemas por ultrapassar o limite de caracteres neste controle, e ele tem as barras de rolagem que podem auxiliar voce no caso de passar o tamanho maximo esperado
vc abre o arquivo e conta a ocorrencia de vbcrlf's no arquivo (contando apenas a quantidade de vbLF ja deve ser o suficiente)
dim Texto as string
dim i as byte
dim Arquivo as string
arquivo = app.path & "\MyArquivo"
texto = string(FileLen(Arquivo),chr$(0))
i=freefile
open Arquivo for input as #i
texto = input(#i,filelen(#i)) 'nao estou com meu vb aki - mas acredito que seja essa sintaxe
close #i
tamanho = len(texto) - len(replace(texto,vblf,""))
com relacao ao redimensionamento da fonte - vc diz exatamente doq? vc esta escrevendo isso onde?
de qualquer forma - talvez seja interessante considerar a possibilidade de usar um richtextbox - nunca tive problemas por ultrapassar o limite de caracteres neste controle, e ele tem as barras de rolagem que podem auxiliar voce no caso de passar o tamanho maximo esperado
uma forma seria usar um AutoSize=true
o problema é que você vai precisar controlar as quebras de linha manualmente.
Ficaria algo como:
quando o label atingir um width do tamanho do form, você pula de linha
quando o label atingir um height do tamanho do form, voce altera o tamanho da font
ainda prefiro utilizar um richtextbox, mas fazendo isso voce pode controlar com labels
o problema é que você vai precisar controlar as quebras de linha manualmente.
Ficaria algo como:
quando o label atingir um width do tamanho do form, você pula de linha
quando o label atingir um height do tamanho do form, voce altera o tamanho da font
ainda prefiro utilizar um richtextbox, mas fazendo isso voce pode controlar com labels
é apenas uma idéia - teria de trabalhar melhor nela para ver se vale a pena ou não - mas segue abaixo...
coloca dois labels - label1 e label2...
label2 vai ser usado apenas para calcular os tamanhos máximos
label1 vai ser o label usado para armazenar os dados efetivamente
adicione também um timer Timer1 - com interval = 50
deixa rolar por alguns segundos e você vai ver o que eu tinha em mente...
ah - a propriedade AutoSize deve ser true nos dois labels
Option Explicit
Dim TamanhoLinha As Integer
Dim TamanhoFonte As Integer
Private Sub Form_Load()
TamanhoFonte = 14
AcertaTamanho
End Sub
Private Sub AcertaTamanho()
Label2.FontSize = TamanhoFonte
Label1.FontSize = TamanhoFonte
Label2.Caption = ""
Do While Label2.Width Width
Label2.Caption = Label2.Caption & "M"
Loop
TamanhoLinha = Len(Label2.Caption)
Label2.Caption = ""
Label1.Caption = ""
End Sub
Private Sub Timer1_Timer()
Static Linha As Integer
If Linha TamanhoLinha Then
Label1.Caption = Label1.Caption & "M"
Linha = Linha + 1
Else
Linha = 0
Label1.Caption = Label1.Caption & vbCrLf
End If
If Label1.Height = Height Then
TamanhoFonte = TamanhoFonte - 2
AcertaTamanho
End If
End Sub
coloca dois labels - label1 e label2...
label2 vai ser usado apenas para calcular os tamanhos máximos
label1 vai ser o label usado para armazenar os dados efetivamente
adicione também um timer Timer1 - com interval = 50
deixa rolar por alguns segundos e você vai ver o que eu tinha em mente...
ah - a propriedade AutoSize deve ser true nos dois labels
Option Explicit
Dim TamanhoLinha As Integer
Dim TamanhoFonte As Integer
Private Sub Form_Load()
TamanhoFonte = 14
AcertaTamanho
End Sub
Private Sub AcertaTamanho()
Label2.FontSize = TamanhoFonte
Label1.FontSize = TamanhoFonte
Label2.Caption = ""
Do While Label2.Width Width
Label2.Caption = Label2.Caption & "M"
Loop
TamanhoLinha = Len(Label2.Caption)
Label2.Caption = ""
Label1.Caption = ""
End Sub
Private Sub Timer1_Timer()
Static Linha As Integer
If Linha TamanhoLinha Then
Label1.Caption = Label1.Caption & "M"
Linha = Linha + 1
Else
Linha = 0
Label1.Caption = Label1.Caption & vbCrLf
End If
If Label1.Height = Height Then
TamanhoFonte = TamanhoFonte - 2
AcertaTamanho
End If
End Sub
Tópico encerrado , respostas não são mais permitidas