Newsgroup: it.comp.lang.visual-basic
Titolo: Problma con Trim che 'non trimma'

Salve,
ho un problemino...mi sono scritto una semplice procedurina per
leggere i tag degli mp3, e fin qui tutto bene. Per eliminare gli spazi
dalla stringa che vado a leggere uso trim, solo che, non sempre sono spazi
quelli che ci sono...e giustamente trim non leva una mazza. Spesso appare
una cosa del genere:
xxx|||||||
cioè come un insieme di lineette dopo
la parola che mi interessa. Ho dato un occhio anche alle funzioni scritte
da altri e loro credo che abbiamo lo stesso problema. Questa cosa è già di
per se fastidiosa, è lo è ancora di più quando ho una stringa
apparentemente vuota, cioè piena di queste lineette. A video non vedo
niente, però vb giustamente non la vede come vbnullstring. Idee??
Saluti...
--------------------------------
Inviato via 
http://usenet.iol.it

 writes:
s> Salve,
s> ho un problemino...mi sono scritto una semplice procedurina per
s> leggere i tag degli mp3, e fin qui tutto bene. Per eliminare gli spazi
Prova a fatti una routine che prima della trim cambia in chr(32) tutti
i caratteri con codice ascii < 32
--
Gian Uberto| main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Lauri      |                        David Korn, 1987 ioccc best one liner 
(aka saint)|-------------------------------------------------------------------
em@ail: 
sa...@eng.it
 ( vedere X-nospam nello header - see X-nospam in header )

La linetta dovrebbe essere chr$(0)
Se č cosě usa Testo=left$(FullText,instr(FullText,chr$(0))-1)

Ciao,
no, la lineetta corrisponde alla rappresentazione grafica di tutti i
caratteri non stampabili, quindi il problema e' un pelo piu' complicato.
beppe
-----------------------------------------------------------
Visita il sito del WWF AltoFerrarese
http://www.comune.cento.fe.it/wwfaf
-----------------------------------------------------------

avevo usato il condizionale!
Normalmente però una sequenza di caratteri in una stringa a lunghezza fissa
termina con 0
I tag degli mp3 non li conosco.

 writes:
F> avevo usato il condizionale!
F> Normalmente però una sequenza di caratteri in una stringa a lunghezza fissa
F> termina con 0
F> I tag degli mp3 non li conosco.
Effettivamente quando  c'è un  campo di  n caratteri in  un file  e si
desidera metterne  meno, in C convienene  fare il padding  con degli 0
(salvo non  dover dare la  cosa in pasto  ad un mainframe :)  ) perché
anche se leggi il blocco con una read poi la stringa è corretta per le
librerie del linguaggio...


 se vi può essere Utile:
Public Function RilevaTAG(NomeFile As String, StrOpzioni As String) As
Variant
    Dim Artista As String
    Dim Album As String
    Dim Titolo As String
    Dim Anno As String
    Dim Commenti As String
    Dim Genere As Integer
    If NomeFile = "" Then Exit Function
    If Dir(NomeFile) = "" Then Exit Function
    Dim FileNum As Integer
    FileNum = FreeFile
    Dim strInput As String
    Open NomeFile For Binary Access Read As FileNum
    If LOF(FileNum) < 128 Then
        Close FileNum
        Exit Function
    End If
    Seek FileNum, LOF(FileNum) - 127
    strInput = Space(3)
    Get FileNum, , strInput
    If strInput <> "TAG" Then
        Close FileNum
        GoTo Chiudi:
    End If
    strInput = Space(30)
    Get FileNum, , strInput
    Titolo = Trim(strInput)
    strInput = Space(30)
    Get FileNum, , strInput
    Artista = Trim(strInput)
    strInput = Space(30)
    Get FileNum, , strInput
    Album = Trim(strInput)
    strInput = Space(4)
    Get FileNum, , strInput
    Anno = Trim(strInput)
    strInput = Space(30)
    Get FileNum, , strInput
    Commenti = Trim(strInput)
    strInput = Space(1)
    Get FileNum, , strInput
    Genere = Asc(strInput)
Chiudi:
    If StrOpzioni = "Titolo" Then
        RilevaTAG = Titolo
    ElseIf StrOpzioni = "Artista" Then
        RilevaTAG = Artista
    ElseIf StrOpzioni = "Album" Then
        RilevaTAG = Album
    ElseIf StrOpzioni = "Anno" Then
        RilevaTAG = Anno
    ElseIf StrOpzioni = "Commenti" Then
        RilevaTAG = Commenti
    Else
        If Genere < 0 Or Genere > 254 Then Genere = 12
        RilevaTAG = CInt(Genere)
    End If
    Close FileNum
End Function
By Utente Win2k