Italian Download files

Raytracer

Member
Licensed User
Ho la necessità di comporre la stringa relativa ad un URL da scaricare al momento, ricavandola come somma di stringhe + 1 variabile. Mi spiego meglio:

se scrivo queste istruzioni, il download va a buon fine:

URL="http://www.abc.it/abc/abc=XXXXdefghil"
DownloadFile(AppPath & "\abcd.txt")



se invece scrivo così (in cui il valore di name è uguale a XXXX) :

name = reg.GetValue("Software\abc\", "abcd")
URL="http://www.abc.it/abc/abc=" & name & "defghil"
DownloadFile(AppPath & "\abcd.txt")

il download non va... ho anche provato a ricavare il valore da passare a URL con la funzione StrReplace, a "comporlo" precedentemente in una variabile da passare successivamente a URL, ma ogni tentativo senza esito... in cosa sbaglio?
Grazie in anticipo a chiunque vorrà rispondermi :)
 

maXim

Active Member
Licensed User
Longtime User
Ciao Raytracer,

non mi pare che stai sbagliando, anche io utilizzo un metodo simile (forse uguale) e funziona tutto correttamente. All'inizio delle mie sperimentazioni mi è capitato qualcosa di vagamente simile che ho risolto "forzando" la RootKey ogni qualvolta che accedevo alle chiavi, per esempio:

B4X:
[FONT=Courier New][SIZE=2][COLOR=#0000ff]Sub [/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2]CreateSubKey[/SIZE][/FONT]
[SIZE=2][FONT=Courier New]    reg.RootKey(reg.rtCurrentUser)[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]    reg.CreateSubKey([/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#800000]"Software"[/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2],[/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800000]"abc"[/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2])[/SIZE][/FONT]
[FONT=Courier New][SIZE=2][COLOR=#0000ff]End Sub[/COLOR][/SIZE][/FONT]
 
[SIZE=2][FONT=Courier New][COLOR=#0000ff]Sub [/COLOR][/FONT][/SIZE][FONT=Courier New][SIZE=2]SetSubKey[/SIZE][/FONT]
[SIZE=2][FONT=Courier New]    reg.RootKey(reg.rtCurrentUser)[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]    reg.SetStringValue([/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#800000]"Software\abc"[/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2],[/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800000]"abcd"[/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2], [/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800000]"XXXX"[/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2])[/SIZE][/FONT]
[FONT=Courier New][SIZE=2][COLOR=#0000ff]End Sub[/COLOR][/SIZE][/FONT]
 
[SIZE=2][COLOR=#0000ff]Sub [/COLOR][/SIZE][SIZE=2]GetSubKey[/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff]    Dim[/COLOR][/SIZE][SIZE=2] xs[/SIZE][/FONT]
[SIZE=2][FONT=Courier New]    reg.RootKey(reg.rtCurrentUser)[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]    xs = reg.GetValue([/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#800000]"Software\abc"[/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2], [/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#800000]"abcd"[/COLOR][/SIZE][/FONT][SIZE=2])[/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff]    Return[/COLOR][/SIZE][SIZE=2] xs[/SIZE][/FONT]
[FONT=Courier New][SIZE=2][COLOR=#0000ff]End Sub[/COLOR][/SIZE][/FONT]

l'esempio è semplificato al massimo solo per intenderci e quindi non è da considerare (ovviamente) per un'applicazione valida.

Se mi passi, anche privatamente, qualche informazione in più (quelle possibili) cercherò, sempre nel mio possibile, di esserti più utile.

Saluti,

Massimo
 
Last edited:

Raytracer

Member
Licensed User
Ciao Massimo,
come sempre grazie per la tua disponibilità e il tuo prezioso aiuto.
Confortato da quanto mi hai confermato nel reply, ho ricontrollato il codice e ho notato una mia inesattezza relativa alla chiave di registro a cui facevo riferimento. L'unica scusa che posso avere è l'ora tarda a cui ho scritto, ma non è che regga più di tanto... :-(
 

Raytracer

Member
Licensed User
Un altro quesito...
Un file (dati.txt) contiene un elenco: ad ogni riga corrisponde un URL relativo ad una immagine. Ho scritto questa routine per scaricare e salvare le immagini come Foto1.jpg, Foto2.jpg, ecc:

FileOpen (c1,"dati.txt",cRead ,, cASCII)
URL = FileRead (c1)
Do Until URL = EOF
i = i + 1
DownloadFile(AppPath & "\RSS\Notizie\Foto" & i & ".jpg")
URL = FileRead (c1)
Loop
FileClose (c1)

Sub DownloadFile (LocalFile)
Response.New1
Request.New1(URL)
Request.TimeOut = 30000
Response.Value = Request.GetResponse
Reader.New1(Response.GetStream,true)
FileOpen(c1,LocalFile,cRandom)
Writer.New1(c1,false)
count = Reader.ReadBytes(buffer(),4096)
Do While count > 0
Writer.WriteBytes2(buffer(),0,count)
count = Reader.ReadBytes(buffer(),4096)
Loop
FileClose(c1)
Response.Close
End Sub

Quando vado ad eseguirlo, mi viene segnalato un errore nella sub DownloadFile, nel punto segnato in grassetto. Potreste dirmi anche qui dov'è l'errore?
 

Raytracer

Member
Licensed User
Ho trovato la ragione...
Usavo lo stesso identificativo (c1) sia nella routine di apertura del file dati.txt, che nella routine di downloadfile.
Ci sono impazzito non poco, e la ragione era sempre la stessa: la mia inesperienza... :(
Pubblica ammenda e queste poche righe di spiegazione a beneficio di chi, come me, è all'inizio e si trova in difficoltà anche nelle cose più semplici. ;)
 
Top