Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Palvelimella olevan datatiedoston päiväys

Sivun loppuun

setä [27.11.2007 16:49:11]

#

Minulla on VB5-sovellus, jolla luetaan data palvelimelta Inet-komponentin avulla ftp-siirtona. Siirto on tarpeeton ellei dataa ole päivitetty edellisen siirron jälkeen. Tämä näkyisi tiedoston päiväyksestä mutta kuinka sen saisi luettua. Inetin Execute-käskyssä ei ole päiväyksen lukua, tiedoston koko kyllä selviää mutta se ei yleensä riitä päivityksen selvittämiseen.

setä [28.11.2007 16:58:20]

#

Löysin joitain määrittelyjä wininet.dll:stä mutta en selkeää esimerkkiä filun muokkauspäiväyksen lukemisesta. Ilmeisesti sillä onnistuu mutta oisko jollain kokemusta vastaavasta hommelista?

neau33 [29.11.2007 08:30:27]

#

Heippa setä!

tutki josko tosta olis jotain apua...

Private Type AJAT
  aikaL As Long
  aikaH As Long
End Type

Private Type TIEDOT
  attribuutit As Long
  luotu As AJAT
  avattu As AJAT
  muokattu As AJAT
  kokoH As Long
  kokoL As Long
  varattu0 As Long
  varattu1 As Long
  tiedosto As String * 260
End Type

Private Declare Function InternetCloseHandle Lib "wininet.dll" _
(ByVal hInet As Long) As Integer
Private Declare Function InternetConnect Lib "wininet.dll" _
Alias "InternetConnectA" (ByVal hInternetSession As Long, _
ByVal sServerName As String, ByVal nServerPort As Integer, _
ByVal sUserName As String, ByVal sPassword As String, _
ByVal lService As Long, ByVal lFlags As Long, _
ByVal lContext As Long) As Long
Private Declare Function InternetOpen Lib "wininet.dll" _
Alias "InternetOpenA" (ByVal sAgent As String, ByVal _
lAccessType As Long, ByVal sProxyName As String, ByVal _
sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function FtpSetCurrentDirectory Lib _
"wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal _
hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
Private Declare Function FtpGetCurrentDirectory Lib _
"wininet.dll" Alias "FtpGetCurrentDirectoryA" (ByVal _
hFtpSession As Long, ByVal lpszCurrentDirectory As _
String, lpdwCurrentDirectory As Long) As Long
Private Declare Function FtpFindFirstFile Lib "wininet.dll" _
Alias "FtpFindFirstFileA" (ByVal hFtpSession As Long, ByVal _
lpszSearchFile As String, lpFindFileData As TIEDOT, ByVal _
dwFlags As Long, ByVal dwContent As Long) As Long

Private Sub Form_Load()
  Dim yhteys As Long, avaa As Long, orgPolku  As String
  avaa = InternetOpen("jokuStringi", 0, vbNullString, vbNullString, 0)
  yhteys = InternetConnect(avaa, "ftp-palvelin", 21, "tunnus", _
  "salasana", 1, IIf(0, 0, 0), 0)
  orgPolku = String(260, 0)
  'FtpGetCurrentDirectory yhteys, orgPolku, Len(orgPolku)
  'FtpSetCurrentDirectory yhteys, "hakemisto" '= /hakemisto
  FtpSetCurrentDirectory yhteys, orgPolku 'takas juureen
  listaaKama yhteys
  InternetCloseHandle yhteys
  InternetCloseHandle avaa
  End
End Sub

Public Sub listaaKama(kamat As Long)

  Dim tiedDATA As TIEDOT, kahvaHaku As Long, palaute As Long
  tiedDATA.tiedosto = String(260, 0)
  kahvaHaku = FtpFindFirstFile(kamat, "database.mdb", tiedDATA, 0, 0)
  If kahvaHaku = 0 Then Exit Sub
  InternetCloseHandle kahvaHaku

  MsgBox tiedDATA.attribuutit & vbCrLf & vbCrLf _
  & tiedDATA.luotu.aikaL & vbCrLf _
  & tiedDATA.luotu.aikaH & vbCrLf & vbCrLf _
  & tiedDATA.avattu.aikaL & vbCrLf _
  & tiedDATA.avattu.aikaH & vbCrLf & vbCrLf _
  & tiedDATA.muokattu.aikaL & vbCrLf _
  & tiedDATA.muokattu.aikaH & vbCrLf & vbCrLf _
  & tiedDATA.kokoH & vbCrLf _
  & tiedDATA.kokoL & vbCrLf & vbCrLf _
  & tiedDATA.varattu0 & vbCrLf _
  & tiedDATA.varattu1 & vbCrLf & vbCrLf _
  & tiedDATA.tiedosto

End Sub

setä [29.11.2007 09:03:23]

#

Kiitos Nea, kokeilempa tuota pikaa. Mahtaakohan olla fiksumpi ratkaisu jättää koko Inet-komponentti (msinet.ocx) pois ja siirtää tiedostot wininet.dll:n avulla.

setä [29.11.2007 13:48:54]

#

Tyssäs tuohon muuttujaan yhteys, jonka arvoksi jäi 0 eli ilmeisesti yhteyttä ei muodostunut.

setä [29.11.2007 23:44:54]

#

Löysin netistä (http://www.15seconds.com/issue/981203.htm) tähän liittyvän ohjeen ja sain yhteyden syntymään. Kuitenkin kohdassa "kahvaHaku = " ohjelma kaatuu aina.
"database.mdb" tilalla on tiedostonimi, joka on palvelimella juurihakemistossa oleva tekstitiedosto testailua varten.

setä [30.11.2007 15:40:27]

#

Lähti workkimaan kun vielä lisäsin tietojen typetykseen yhden osan.

setä [01.12.2007 09:48:32]

#

Onko tyypillistä vai palvelimesta riippuva ominaisuus, että tuo aikamäärä on ilmoitettu 64 bitillä 0,1 µs erottelulla, mutta aikamäärä asettuu kuitenkin minuutin resoluutiolla.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta