Newsgroup: it.comp.appl.access
Titolo: Aiutatemi a capire...

Buongiorno a tutti,
riscontro questa anomalia, almeno per le mie conoscenze. 
Tramite un modulo che ho trovato googlando ottengo il percorso del desktop del pc corrente: Desk=GetSpecialfolder(CSIDL_DESKTOP) con "Len((GetSpecialfolder(CSIDL_DESKTOP)))" ottengo un bel 512 (!!!) anche se la stringa ottenute in teoria dovrebbe essere di soli 23 caratteri infatti sarebbe questa "C:\Users\Faragò\Desktop " il problema non sarebbe tale se tramite un bel Trim(Desk) riuscissi ad ottenere una stringa di 23 caratteri ma ne ottengo una di 24 con quel maledetto spazio alla fine che non riesco ad eliminare!
Perchè? Come ovviare?
 
Grazie
 
Alfio
 
 

Il motivo per cui hai come ritorno una Stringa con 512 CHAR è che sicuramente hai predisposto la stringa Desk in modo tale da poter accogliere il dato restituito... e questo è proprio l'API che usi a richiederlo...
 
Se verifichi varai:
Private Const MAX_PATH = 260&
Desk= String$(MAX_PATH, vbNullChar)
 
Quel MAX_PATH è la dimensione del BUFFER... che in HEX=260=512(Decimale)
 
Quindi di slito le stringhe restituite da questo processo vanno RIPULITE.
 
Ora se passi il risultato per questa funzione cosa ottieni...?
 
Public Function TrimToNull(ValueIN As String) As String
    Dim N As Long
    N = InStr(1,ValueIN ,vbNullChar)
    If N Then 
        TrimToNull = Left(ValueIN ,N-1)
    Else
        TrimToNull = ValueIN 
    End If
End Function   
 
Saluti
@Alex

 
 
Ciao Alex e grazie per l'aiuto,
dopo aver ricopiato la funzione in un modulo e richiamarta con:
TrimToNull (Desk)
il risultato continua ad essere una stringa di 512
 
Ho sbagliato qualcosa?
 
Alfio

Posta la parte in cui prepari la Stringa Desk, ti ho spiegato come viene realizzato il BUFFER, magari nel tuo codice invece di riemmpirla con vbNullChar la riempi con altri CHAR... serve un minimo di ampiezza di vedute...
 
@Alex

 @Alex
Private Sub Comando80_Click()
Dim mCartella, NomeFile, Desk, mPath As String
Desk = GetSpecialfolder(CSIDL_DESKTOP)
TrimToNull (Desk)
mCartella = "\Spedizioni\"
NomeFile = "Spedizioni del " _
    & Day(Date) & "-" _
    & Month(Date) & "-" _
    & Year(Date) & "  -  " _
    & Me.Destinatario _
    & ".txt"
mPath = Desk & mCartella & NomeFile
Close #1
Open mPath For Output As #1
Write #1, Me.[RAGIONE SOCIALE] & ";" & Me.Referente & ";" & Me.Indirizzo & ";" & Me.Cap & ";" & _
        Me.LOCALITA & ";" & Me.PR & ";" & Me.NAZ & ";" & "Tel" & ";" & "FAX" & ";" & Me.CELL & ";" & _
        Me.EMAI & ";" & "ID FISCALE" & ";" & Me.[codice servizio] & ";" & "99" & ";" & "99" & ";" & _
        "DDT NR 1794/TS" & ";" & Me.[N° COLLI] & ";" & Me.Peso & ";" & Me.[IMPORTO C/A] & ";" & _
        Me.[METODO PAG] & ";" & Me.[TIPO CON] & ";" & Me.[DESC CONT] & ";" & "TIPO IMBALLO" & ";" & _
        Me.Altezza & ";" & Me.[LARGH COLLO] & ";" & Me.PROFONDITA & ";" & "Pag Oneri" & ";" & Me.[VALORE DIC] & _
        Me.ASS & ";" & Me.NOTE
Close #1
End Sub

 Alfio

 commetti un'altra inesattezza.
 
..e quale sarebbe?
 
 
 
Ciao
 
Alfio
 

 
Mi rispondo da solo mCartella= "Spedizioni\"
 
Per il resto non trovo ancora soluzione...
 
Alfio

Alfio expressed precisely :

Devi avere uno spiritello nel computer...
Io con
S = "C:\Users\Faragò\Desktop "
MsgBox Len(Trim(S))
ottengo 23.
 
E con Trim(S) & "\"   ottengo  "C:\Users\Faragò\Desktop\"
 
Se la montagna non va a Maometto...
 
Bruno

 riscontro questa anomalia, almeno per le mie conoscenze. 
 
Ma adesso, a prescindere : perche' non  ti  salvi  i  dati  su un 
percorso del disco rigido qualunque e poi fai un bel collegamento
col desktop ? 
 
Cosi' risolvi tutto senza alcun problema. 
 
Cioe' voglio dire : perche' devi *per forza* fare in modo  che il 
file risieda sul desktop, che poi gira che  ti  rigira  e' sempre 
una parte del disco rigido ? 
 
No, chiedo eh ...

It happens that 
radica...@gmail.com
 formulated :

Ed è anche quella a maggior rischio.
Ti parte Windows e son problemi...
 
Bruno

 col desktop ?
 
Perche' e' difficile che le montagne vadano a maometto?
 
 
-- 
ac (x=y-1)
Aborro il Killfile
(La violenza e' l'ultimo rifugio degli incapaci -Salvor Hardin-)
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
http://www.avast.com
 
 


Bruno. De che?
E bada che che non sto sostenedo l'ipotesi di radicale.
A lui ho risposto: perche' e' difficile che le momtagne vadano a Maometto.
Ma, talvolta, neanche maometto e' obbligato ad andare alle montagne.
Quello che scrive radicale, se lui me lo consente "e' normale" che poi, 
dato un problema, uno cerca di risolverlo per quello che e', e' una 
sfida ;-)


 Bruno. De che?
Se ti parte Windows alla brutta, che tu debba reinstallarlo
from scratch, dovrai smontare l'HD e cercar di leggere
la dir Desktop da altro PC...
A me è capitato una volta, poi sbagliando s'impara.
 
Bruno


come qualsiasi altro indirizzo?
O forse non avevo capito ed eri in perfetta "sintonia" con radicale?


 O forse non avevo capito ed eri in perfetta "sintonia" con radicale?
 
Se devi reinstallare Windows from scratch ti vola via
tutto quanto concerne Windows ma non gli altri dati
sull'HD.
 
Così, reinstallato Windows, gli altri dati sull'HD
sono direttamente accessibili da quello stesso
Windows, senza dover fare acrobazie.
Direi che c'è un bel c... di differenza!
 
Bruno

 ottengo 23
 
Otterrei anch'io 23 caratteri se partissi da quella stringa, ma io parto da una funzione che mi restituisce il path del desk lungo 512 e dopo averlo trimmato mi dà un bel 24...
 
Buonanotte e grazie per l'attenzione dedicata.
 
Alfio
 
 
 

 Se il problema lo aggiri non vai molto lontano.
 
Perfetto, capisco benissimo.

 Ti parte Windows e son problemi...
 
Ben detto.
 
Io  farei  un piccolo listato vb (oddio come se chiama ... il vb 
interpretato  su file di testo, non mi viene aiutami) su un file
di testo che crea il collegamento e lo fa apparire sullo schermo
dell' utente. 
 
Una volta l'  ho fatto : una spada. Solo che non mi ricordo piu'
com' era :-) 
 
Pero' giustamente l' OP voleva capire come fare a prescindere, 
come sfida. E lo capisco benissimo.
 
 
 
 
 
 
 
 

 interpretato  su file di testo, non mi viene aiutami) 
 
Il "VB SCRIPT" !!!  Oh,  mi  si  era bloccato il cervello. Mica mi 
veniva eh ! 
 
 


Scusate , ma il problema mi sembra più semplice .
 
io utilizzo questo 
 
Environ("userprofile") & "\Desktop\"

 Environ("userprofile") & "\Desktop\"
 
...e ci voleva tanto a dirlo?!?!? :)
Grande, finalmente la soluzione al problema.
 
Grazie
 
Alfio
 
PS: seguito a quanto giustamente segnalato da Bruno (circa la dipartita del S.O.), ho optato per la creazione della cartella in "C:\". Comunque sia andata ho appreso qualcosa...ed è quello che conta.