Avatar billede rennebo Nybegynder
09. april 2001 - 20:34 Der er 9 kommentarer og
1 løsning

Timestamp ell. lign.

Jeg skal lave et unikt filnavn, så jeg tænkte om der ikke findes en Timestamp i VB som f.eks i Java??

Hvis ikke, hvordan klarer man så problemet??
Avatar billede netsrac Praktikant
09. april 2001 - 20:36 #1
dim timestamp
timestamp = date() & time()


??
Avatar billede winkill Nybegynder
09. april 2001 - 20:39 #2
Her er netsrac\'s løsning i en version der er ens uanset PC\'ens localsettings (tidszone).

Dim timestamp
timestamp = Right(\"2000\" & Year(Now()), 4)
timestamp = timestamp & Right(\"00\" & Month(Now()), 2)
timestamp = timestamp & Right(\"00\" & Day(Now()), 2)
timestamp = timestamp & Right(\"00\" & Hour(Now()), 2)
timestamp = timestamp & Right(\"00\" & Minute(Now()), 2)
timestamp = timestamp & Right(\"00\" & Second(Now()), 2)
Avatar billede winkill Nybegynder
09. april 2001 - 20:41 #3
Jeg kom lige til at tænke på at det jo kun er unikt såfremt du kun bruger funktionen EN gang hvert sekund... Prøv i stedet denne...

Private Declare Function GetTickCount Lib \"kernel32\" Alias \"GetTickCount\" () As Long

Dim timestamp
timestamp = Right(\"2000\" & Year(Now()), 4)
timestamp = timestamp & Right(\"00\" & Month(Now()), 2)
timestamp = timestamp & Right(\"00\" & Day(Now()), 2)
timestamp = timestamp & Right(\"00\" & Hour(Now()), 2)
timestamp = timestamp & Right(\"00\" & Minute(Now()), 2)
timestamp = timestamp & Right(\"00\" & Second(Now()), 2)
timestamp = timestamp & Right(\"0000000000\" & GetTickCount, 10)
Avatar billede winkill Nybegynder
09. april 2001 - 20:43 #4
Ellers er der denne WinAPI funktion...

Public Declare Function GetTempFileName Lib \"kernel32\" Alias \"GetTempFileNameA\" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
Avatar billede netsrac Praktikant
09. april 2001 - 20:43 #5
spm. kan man nå at save mere end en fil i sekundet ?
Avatar billede winkill Nybegynder
09. april 2001 - 20:52 #6
Ja !!

Eks.:

Private Declare Function GetTickCount Lib \"kernel32\" Alias \"GetTickCount\" () As Long

Call GemMereEndEnFilISekundet(1024)

Public Sub GemMereEndEnFilISekundet(NumOfBytes)
  Dim f1 As Integer, f2 As Integer
  Dim StartTime As Long
  f1 = FreeFile
  f2 = FreeFile
  StartTime = GetTickCount
  Open \"c:\\x1\" For Output As f1
  Open \"c:\\x2\" For Output As f2
  Print #f1, String(NumOfBytes, \"x\")
  Print #f2, String(NumOfBytes, \"y\")
  Close #f1
  Close #f2
  DoEvents
  Call Msgbox(\"Det tog \" & GetTickCount - StartTime & \" millisekunder at gemme 2 gange \" & NumOfBytes & \" bytes på disc samt at loope give OS\'et tid til at checke andre programmer for events. Have a nice day ;o)\")
End Sub
Avatar billede winkill Nybegynder
09. april 2001 - 20:54 #7
Ups...
f2 = freefile \'skal lige flyttes ned til efter Open \"c:\\x1\" For Output As f1
Avatar billede rennebo Nybegynder
09. april 2001 - 21:33 #8
netsrac.... Ja, man kan sagtens danne mere end en fil i sekundet.....

Enten ved at man her en klasse der danner flere filer, eller hvis man kører over et netværk hvor f.eks 1000 computere bruger systemet.
Avatar billede rennebo Nybegynder
09. april 2001 - 21:35 #9
winkill..... Du er jo briliant :o)

Jeg må nok hellere se at få kigget lidt nærmere på det der Kernel sjov.... Der er jeg stadig lidt grøn....
Avatar billede winkill Nybegynder
09. april 2001 - 22:42 #10
rennebo > Tak, hvis du har hele Visual Studio installeret så kan du bruge \"API Text Viewer\" til at se diverse Kernel kald, hvordan de declareres. På http://msdn.microsoft.com/library/default.asp kan du læse om funktionerne - dog i C++ syntax...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester