[VB6] Zmienna jako ścieżka pliku


(Marcinch7) #1

Zrobiłem w VB6 klienta ftp za pomocą kontrolki inet, mam np. zmienną "plik" co zrobić gdybym chciał użyć tej zmiennej jako ścieżki do pliku? Aby wrzucić plik trzeba użyć opcji np.

inet1.execute, "put C:\plik.txt pliknaserwie.txt"

razem z cudzysłowami a więc jak podstawić zmienną "plik" pod miejsce gdzie jest C:\plik.txt?


(system) #2
inet1.execute, "put "+plik+" pliknaserwie.txt"

(Marcinch7) #3

Już patrze :smiley:

W dniu 23.07.2008 , o godzinie 12:10 został dopisany post przez marcinch7

No i... działa :smiley:

A jak zrobić aby zamiast plik na serwie była losowa nazwa pliku i rozszerzenie takie jak na końcu zmiennej plik?


(system) #4
Randomize

pos=InstrRev(plik,"\")

nplik=iif(pos>0,Mid(plik,pos+1),plik)

pos=InstrRev(nplik,".")

inet1.execute, "put "+plik+" "+Hex(2147483647*Rnd)+iif(pos>0,Mid(nplik,pos),"")

albo

Randomize

pos=InstrRev(plik,"\")

nplik=iif(pos>0,Mid(plik,pos+1),plik)

pos=InstrRev(nplik,".")

inet1.execute, "put "+plik+" "+iif(pos>0,Mid(nplik,1,pos-1)+Hex(2147483647*Rnd)+Mid(nplik,pos),plik+Hex(2147483647*Rnd))

Z tym ze i tak nie ma gwarancji że niema takiego pliku na serwerze.


(Marcinch7) #5

13tySmok , Ok ale zamiast losowanej liczby na serwerze pokazuje się np. 1.PNG a gdy wrzucam kolejny plik png to ten pierwszy zostaje przez niego zastąpiony :frowning:

A jak zrobić aby nazwę tego wylosowanego pliku podstawić pod zmienną?


(system) #6
Randomize

zapodaj przed pierwszym użyciem Rnd.

Część wyrażenia po ostatnim "+ jest generowaną nazwą na serwerze, podstaw pod zmienną.


(Marcinch7) #7

Wszystko OK tylko, że zamiast pli1k.gif jest np. plik.gi1f


(system) #8

sorki, powinno byc:

pos=InstrRev(nplik,".")

(Marcinch7) #9

Teraz jeszcze inny błąd! Wrzucam plik gif. Nazwa zmienia się na 1.gif, wrzucam drugi nazwa zmienia się na 0.gif, pierwszy zostaje nienaruszony, wrzucam trzeci, pierwszy zostaje zastąpiony!

W dniu 23.07.2008 , o godzinie 14:28 został dopisany post przez marcinch7

Zastosowałem drugi kod i jest chyba OK!

W dniu 23.07.2008 , o godzinie 14:32 został dopisany post przez marcinch7

A z tym podstawianiem zmiennej mógłbyś jaśniej wytłumaczyć?


(system) #10

zamiast:

inet1.execute, "put "+plik+" "+iif(pos>0,Mid(nplik,1,pos-1)+Hex(2147483647*Rnd)+Mid(nplik,pos),plik+Hex(2147483647*Rnd))

można napisac:

a="put "

b=" "

c=Mid(nplik,1,pos-1)

d=Hex(2147483647*Rnd)

e=Mid(nplik,pos)

splik=iif(pos>0,c+d+e,plik+d)

inet1.execute, a+plik+b+splik

Heh, zapomniałem jak Rnd sie używa w VB :smiley: :smiley: :smiley:

Zamień Rnd(x) na x*Rnd.

W przykładach zaraz poprawie.


(Marcinch7) #11

Jesteś WIELKI! :tancze: