Porovnanie datumu dvoch suborou – Visual Basic – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Porovnanie datumu dvoch suborou – Visual Basic – Fórum – Programujte.comPorovnanie datumu dvoch suborou – Visual Basic – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Karol
~ Anonymní uživatel
20 příspěvků
1. 8. 2011   #1
-
0
-

Caute

Ako mozem porovnat dve subory a to ich datumy.Jeden je na servery a druhy v pc.Dakujem

Nahlásit jako SPAM
IP: 217.115.249.–
Reklama
Reklama
Karol
~ Anonymní uživatel
20 příspěvků
2. 8. 2011   #2
-
0
-

#1 Karol
Potreboval by som nieco na update pre moj program tak aby vedel ze na servery je novsia verzia ako v pc a vyzval uzivatela na update.Dakujem

Nahlásit jako SPAM
IP: 217.115.249.–
liborb
~ Redaktor
+18
Guru
2. 8. 2011   #3
-
0
-

http dotaz na server se stávající verzí programu (nebo ještě lépe v XML) a něj odpověď ze serveru (zase třeba jako XML) i s adresou, kde je možné soubor stáhnout, jakou mí verzi, co obsahuje ....

Nahlásit jako SPAM
IP: 78.80.52.–
Karol
~ Anonymní uživatel
20 příspěvků
7. 8. 2011   #4
-
0
-

#3 liborb
DSom trochu pokrocili ale ani nemam predstavu ako by to malo vyzerat.Ja som si predstavoval ze niejaky prikaz skontroluje datum na servery a dalsi porovna s verziou v pc a ak bude rozdiel tak ponukne uzivateleovy ci chce aktulizaciu

Nahlásit jako SPAM
IP: 217.115.249.–
liborb
~ Redaktor
+18
Guru
9. 8. 2011   #5
-
0
-

Datum souboru zná jenom server, kontrolu může provést jenom server, takže nejspíš nějaký příkaz nebude existovat. Možná by se to dalo přes FTP, ale když se ti nelíbilo HTTP, tak se ti nebude líbit ani FTP. A přitom je to tak snadné, jen by stačilo trochu chtít ...

Nahlásit jako SPAM
IP: 78.80.52.–
Karol
~ Anonymní uživatel
20 příspěvků
11. 8. 2011   #6
-
0
-

Pre ftp mam toto ale ako do toho vlozit kontrolu datumu este pred stahovanim neviem.

Private Sub cmdUpdate_Click()

' Simple FTP Sample
' This is written in VB 6.  You need to include
' Microsoft Internet Transfer Control 6.0 (MSINET.OCX)
' in your code (referred to as Inet1 in this code).
'
'
'Obviously you will need to change the values used below to the
'ones that suit your needs

'   Label5.Visible = True
  '  cmdUpdate.Enabled = False
  
'  Inet1.AccessType = icUseDefault
   ' URL of FTP Site goes here.
  ' Inet1.URL = "ftp://www.xxxxxxx.xx.cz"
  ' Inet1.UserName = "xxx.xxxxxxxxx.xx.cz"
  ' Inet1.Password = "xxxx"
  
  ' Inet1.RequestTimeout = 40
   ' GET Command here.
   ' download welcome.txt and place it on c:\welcome.txt
   'Inet1.Execute , "GET OpelEngine.exe c:\OpelEngine.exe"
   'Do While Inet1.StillExecuting
    '  DoEvents
        'ProgressBar1.Value = ProgressBar1.Value + 1
        'ProgressBar1 = Val(ProgressBar1) + Val(1)
        'lblPercent.Caption = Inet1(ProgressBar1.Value * 100 / ProgressBar1.Max)
'        lblPercent.Refresh
'   Loop
'  Inet1.Execute , "CLOSE"
  ' Label5.Visible = False
  ' MsgBox ("Update Completed")
  ' Shell "c:\xxxx.exe"
'End Sub

Nahlásit jako SPAM
IP: 217.115.249.–
liborb
~ Redaktor
+18
Guru
11. 8. 2011   #7
-
0
-

Problém je v tom, že FTP je jen na přenos souborů a datum zjistíš nejspíš jen při listování souborů. A když vidím "tvůj" kód, tak mě tak napadá, že pro tebe asi bude nejjednodušší si datum uložit do extra souboru (xxx.exe.date), takže si nejprve stáhneš malý soubor, který bude obsahovat datum toho velkého, porovnáš je a pak případně stáhneš velký.

Nahlásit jako SPAM
IP: 78.80.52.–
Karol
~ Anonymní uživatel
20 příspěvků
11. 8. 2011   #8
-
0
-

liborb a vedel by si mi s tim pomoct?Hladam to uz 2 tizdne na internete a nic.Bol by som vdacny

Nahlásit jako SPAM
IP: 217.115.249.–
liborb
~ Redaktor
+18
Guru
12. 8. 2011   #9
-
0
-

V tom "tvém" kódu je stahování souboru, takže ho tam přidej ještě jednou. Poprvé stahuj soubor s datem (třeba něco.exe.date). Ten následně otevři, načti řádek s datem a zkontroluj, jestli je novější, starší, stejný, lepší, tenčí, hezčí .... Pokud ti z porovnání (z podmínky) vyjde, že máš stahovat, tak budeš stahovat ten datový soubor (třeba něco.exe), jinak nebudeš stahovat nic.

Nahlásit jako SPAM
IP: 78.80.52.–
Karol
~ Anonymní uživatel
20 příspěvků
16. 8. 2011   #10
-
0
-

Vyriesil som to takto.

Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Const INTERNET_FLAG_EXISTING_CONNECT = &H20000000

Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _
(ByVal lpszAgent As String, ByVal dwAccessType As Long, _
  ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, _
ByVal dwFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias _
"InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, _
ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, _
ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As _
Long) As Integer
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As _
Long, ByVal lpBuffer As String, ByVal dwNumberOfBytesToRead As Long, _
lNumberOfBytesRead As Long) As Integer

' Download a file from Internet and save it to a local file
'
' it works with HTTP and FTP, but you must explicitly include
' the protocol name in the URL, as in
' CopyURLToFile "http://www.vb2themax.com/default.asp", "C:\vb2themax.htm"

Sub CopyURLToFile(ByVal URL As String, ByVal FileName As String)
Dim hInternetSession As Long
Dim hUrl As Long
Dim FileNum As Integer
Dim ok As Boolean
Dim NumberOfBytesRead As Long
Dim Buffer As String
Dim fileIsOpen As Boolean

On Error GoTo ErrorHandler

' check obvious syntax errors
If Len(URL) = 0 Or Len(FileName) = 0 Then err.Raise 5

' open an Internet session, and retrieve its handle
hInternetSession = InternetOpen(App.EXEName, INTERNET_OPEN_TYPE_PRECONFIG, _
vbNullString, vbNullString, 0)
If hInternetSession = 0 Then err.Raise vbObjectError + 1000, , _
"An error occurred calling InternetOpen function"

' open the file and retrieve its handle
hUrl = InternetOpenUrl(hInternetSession, URL, vbNullString, 0, _
INTERNET_FLAG_EXISTING_CONNECT, 0)
If hUrl = 0 Then err.Raise vbObjectError + 1000, , _
"An error occurred calling InternetOpenUrl function"

' ensure that there is no local file
On Error Resume Next
Kill FileName

On Error GoTo ErrorHandler

' open the local file
FileNum = FreeFile
Open FileName For Binary As FileNum
fileIsOpen = True

' prepare the receiving buffer
Buffer = Space(4096)

Do
' read a chunk of the file - returns True if no error
ok = InternetReadFile(hUrl, Buffer, Len(Buffer), NumberOfBytesRead)

' exit if error or no more data
If NumberOfBytesRead = 0 Or Not ok Then Exit Do

' save the data to the local file
Put #FileNum, , Left$(Buffer, NumberOfBytesRead)
Loop

' flow into the error handler

ErrorHandler:
' close the local file, if necessary
If fileIsOpen Then Close #FileNum
' close internet handles, if necessary
If hUrl Then InternetCloseHandle hUrl
If hInternetSession Then InternetCloseHandle hInternetSession

' report the error to the client, if there is one
If err Then err.Raise err.Number, , err.Description
End Sub

Private Sub Form_Load()
Update.Command1.Caption = "Skontroluj"
End Sub




Private Sub Command1_Click()
Dim FF As Integer
Dim Riadok As String
Dim Text_vystup As String
Dim datum1 As String
Dim datum2 As String


Update.Command1.Enabled = False

FF = FreeFile

 CopyURLToFile "http://xx.xx.xx/xx/datum.txt", "data.dat"

Open "data.dat" For Input As FF

Text_vystup = Input(LOF(FF), #FF)

Label4.Caption = Text_vystup
datum1 = Text_vystup
Label5.Caption = FileDateTime(App.Path & "\xxx.exe")  Subor na disku
datum2 = Label5

If datum1 > datum2 Then

Update.Label1.Caption = " Stahujem !"
Update.Label1.Visible = True
Form1.Image17.Visible = False
stiahny
Else
Update.Label1.Visible = True
Form1.Image17.Visible = False
End If
End Sub



Private Sub stiahny()

Inet1.AccessType = icUseDefault
'URL of FTP Site goes here.
  Inet1.URL = "ftp://www.xxxxx.xx.xx"
  Inet1.UserName = "xxx.xxxxx.xx.xx"
  Inet1.Password = "xxxxxxxxx"

Inet1.RequestTimeout = 40
' GET Command here.
' download welcome.txt and place it on c:\welcome.txt
  Inet1.Execute , "GET xxxxxxx.xxx c:\WINDOWS\Temp\xxxxx.xxx"
Do While Inet1.StillExecuting
DoEvents
Loop
 Update.Label1.Caption = "Zatvor program xxxxxxxxxxxx a pokracuj v instalacii!"
 Shell "c:\WINDOWS\Temp\xxxxxxxx.xxx"
End Sub

Nahlásit jako SPAM
IP: 217.115.249.–
liborb
~ Redaktor
+18
Guru
16. 8. 2011   #11
-
0
-

Kdyby ten kód byl vložený jako kód, tak by toho bylo i vidět víc. Jedna věc mě ovšem upoutala, a to:

 download welcome.txt and place it on c:\welcome.txt
  Inet1.Execute , "GET xxxxxxx.xxx c:\WINDOWS\Temp\xxxxx.xxx"

tj. očekává se, že jsou Windows nainstalované na disku C: a v adresáři WINDOWS. Pokud to budeš používat sám, tak ok, pokud to hodláš někomu dát, tak se koukni na GetTempPath a GetTempFileName funkce.

Nahlásit jako SPAM
IP: 78.80.52.–
Karol
~ Anonymní uživatel
20 příspěvků
17. 8. 2011   #12
-
0
-

Cau liborb

Skusal som to ale nedari sa mi aj nasiel som si pekny priklad ale nie a nie to tam dat aby to slo ako ma.Pomozes mi?

Option Explicit
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long 'Tohle vše na jeden řádek teda kromě Options Explicit prostě celou jednu funkci



Private Sub Form_Load()
On Error Resume Next
Dim cestatemp As String
cestatemp = String(255, Chr(0))
GetTempPath 255, cestatemp
Print cestatemp
Text1.Text = cestatemp
End Sub
Nahlásit jako SPAM
IP: 217.115.249.–
liborb
~ Redaktor
+18
Guru
18. 8. 2011   #13
-
0
-
Nahlásit jako SPAM
IP: 78.80.52.–
Karol
~ Anonymní uživatel
20 příspěvků
18. 8. 2011   #14
-
0
-

   

'Stiahnutie suboru OpelEngine
    Set fso = CreateObject("Scripting.FileSystemObject")
    tempdir = fso.GetSpecialFolder(2)

 
   Inet1.AccessType = icUseDefault
    'URL of FTP Site goes here.
   Inet1.URL = "ftp://xxx.xxxxxxxx.xx.xx"
   Inet1.UserName = "xxxxxx.xxxxxxx.xx.xx"
   Inet1.Password = "xxxxxxxxxxxxxxx"
   
   Inet1.RequestTimeout = 40
   ' GET Command here.
   ' download welcome.txt and place it on c:\welcome.txt
   
    Inet1.Execute , "GET xxxxxxxxx.xxx" & (tempdir & "\xxxxxx.xxx")
   
   
   Do While Inet1.StillExecuting
      DoEvents
 Loop
 Update.Label1.Caption = "Zatvor program OpelEngine a pokracuj v instalacii!"
 
 Shell (tempdir & "\xxxxxxx.xxx")
End Sub

Pohral som sa stim este ale aj tak mi to nejde.Subor mi do adresara temp nestiahne.Kde mam chybu?dakujem

Nahlásit jako SPAM
IP: 217.115.249.–
Karol
~ Anonymní uživatel
20 příspěvků
18. 8. 2011   #15
-
0
-

Este som riesil jeden problem.Ak subor uz bol na disku a ja som chcel stiahnut novsiu verziu tak mi tento subor neprepisalo tak som si spravil mali zdrojak na zmazanie.

Private Sub Form_Load()
    Set fso = CreateObject("Scripting.FileSystemObject")
    tempdir = fso.GetSpecialFolder(2)


If Dir(tempdir & "\aaa.tmp") <> "" Then
     
     fso.DeleteFile (tempdir & "\aaa.tmp")

Else
End If
End Sub
Nahlásit jako SPAM
IP: 217.115.249.–
Karol
~ Anonymní uživatel
20 příspěvků
18. 8. 2011   #16
-
0
-

liborb ja nepotrebujem vytvorit docasny subor ja uz mam dani subor ktory potrebujem stiahnut

Nahlásit jako SPAM
IP: 217.115.249.–
liborb
~ Redaktor
+18
Guru
18. 8. 2011   #17
-
0
-

#14 Karol
Co obsahuje tempdir? (nech si ho vypsat)

Stáhl se ten soubor, když si tam měl umístěný napevno? (C:\WINDOWS....)

#15 Karol
A smaže se? :)

#16 Karol
Stahuješ soubor ze serveru do dočasného souboru na disk resp. stahuješ ho tempu a v tvém podání není asi zase tak dočasný. Prostě potřebuješ ten soubor stáhnout k sobě na disk, a je jedno jestli jako dočasný soubor nebo "nedočasný" :)  

Nahlásit jako SPAM
IP: 78.80.52.–
Karol
~ Anonymní uživatel
20 příspěvků
18. 8. 2011   #18
-
0
-

Este som sa s tim pohral ale stale mi to nestiahne subor do uzivatelskeho tempu.Pomoze niekdo?Dakujem


'Stiahnutie suboru OpelEngine
    Set fso = CreateObject("Scripting.FileSystemObject")
    tempdir = (fso.GetSpecialFolder(2) & "\xxxxxxx.xxx")

 
   Inet1.AccessType = icUseDefault
    'URL of FTP Site goes here.
   Inet1.URL = "ftp://www.xxxx.xx.xx"
   Inet1.UserName = "xxxx.xxxxxxx.xx.xx"
   Inet1.Password = "xxxxxx"
   
   Inet1.RequestTimeout = 40
   ' GET Command here.
   ' download welcome.txt and place it on c:\welcome.txt

    Inet1.Execute , "GET xxxxxxxxxxxxx.xxx" & (tempdir)
   
   
   Do While Inet1.StillExecuting
      DoEvents
 Loop
 Update.Label1.Caption = "Zatvor program xxxxxxxxxxx a pokracuj v instalacii!"

 Shell (tempdir)
End Sub
Nahlásit jako SPAM
IP: 217.115.249.–
Karol
~ Anonymní uživatel
20 příspěvků
18. 8. 2011   #19
-
0
-

liborb ano teraz cesta uz obsahuje aj nazov suboru ale stale mi ho nestiahne.Predtim bola to len cesta do uzivatelskeho tempu.

Nahlásit jako SPAM
IP: 217.115.249.–
Karol
~ Anonymní uživatel
20 příspěvků
18. 8. 2011   #20
-
0
-

Subor sa mi stiahol ked tam bola napisana cela cesta kam sa ma stiahnut

Nahlásit jako SPAM
IP: 217.115.249.–
liborb
~ Redaktor
+18
Guru
18. 8. 2011   #21
-
0
-

A není to stejná chyba, tj něco na tento způsob:

Dim stahuj As String

...

stahuj = ("GET xxxxxxxxxxxxx.xxx" & tempdir)

...

Inet1.Execute , stahuj
Nahlásit jako SPAM
IP: 78.80.52.–
Karol
~ Anonymní uživatel
20 příspěvků
18. 8. 2011   #22
-
0
-

Takto mam cestu ked zmenim na 1

Inet1.Execute , "GET OpelEngine.exe" & (tempdir)

tempdir = C:\WINDOWS\system32\xxxxxxxxxxx.xxx

Nahlásit jako SPAM
IP: 217.115.249.–
Karol
~ Anonymní uživatel
20 příspěvků
18. 8. 2011   #23
-
0
-

Ak si naznacoval toto Inet1.Execute , "GET xxxxxxx.xxxc:\WINDOWS\Temp\xxxxx.xxx" bez mezeri tak to asi mas pravdu ze ak tam nieje mezera tak to nestiahne ale ako to osetrit?

Nahlásit jako SPAM
IP: 217.115.249.–
Karol
~ Anonymní uživatel
20 příspěvků
18. 8. 2011   #24
-
0
-

Tak ako sme zistili.Cesta kde sa ma ulozit nieje odelena od suboru.Celi den sa s tim hrajem a nemozem nato prist.Ako mam tam spravit mezeru?Dakujem

GET xxxxxxxxxx.xxxC:\DOCUME~1\Karol\LOCALS~1\Temp\xxxxxxxx.exe

Nahlásit jako SPAM
IP: 217.115.249.–
liborb
~ Redaktor
+18
Guru
19. 8. 2011   #25
-
0
-

Nic jsem nechtěl naznačit, prostě jsem udělal chybu   

Dim stahuj As String

...

stahuj = ("GET xxxxxxxxxxxxx.xxx " & tempdir)

...

Inet1.Execute , stahuj

a samozřejmě tempdir obsahuje filepath nebo-li úplnou cestu k souboru na disku.

Nahlásit jako SPAM
IP: 78.80.52.–
Karol
~ Anonymní uživatel
20 příspěvků
19. 8. 2011   #26
-
0
-

Dakujem liborb

Uz vcera vecer som tiez nato prisiel.Este raz dakujem

Nahlásit jako SPAM
IP: 217.115.249.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

Podobná vlákna

Porovnanie dvoch kníh — založil gaben

Server na dvoch linkach — založil Prog.

Násobenie dvoch matíc — založil Kent

Súčin dvoch matíc — založil majus85

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý