Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Что быстрее? Добавлено: 29.04.09 14:50  

Автор вопроса:  Sergey
Что быстрее работает в VB 2008: API-функции или стандартные функции VB?

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #1
Добавлено: 29.04.09 15:01
API

Ответить

Номер ответа: 2
Автор ответа:
 Sergey



Вопросов: 39
Ответов: 87
 Профиль | | #2 Добавлено: 29.04.09 15:26
Тогда как получить время файла с API?

Ответить

Номер ответа: 3
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #3
Добавлено: 29.04.09 15:42
Тогда как получить время файла с API?


Медитация над фразой не помогла

Ответить

Номер ответа: 4
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #4 Добавлено: 29.04.09 16:13
тебе же уже говорили имя функции.

пример из API-Guide:
  1. 'This program needs a Dialog box, named CDBox1
  2. '  (To add the Common Dialog Box to your tools menu, go to Project->Components (or press CTRL-T)
  3. '   and select Microsoft Common Dialog control)
  4. Private Type FILETIME
  5.     dwLowDateTime As Long
  6.     dwHighDateTime As Long
  7. End Type
  8. Private Type SHFILEOPSTRUCT
  9.     hWnd As Long
  10.     wFunc As Long
  11.     pFrom As String
  12.     pTo As String
  13.     fFlags As Integer
  14.     fAborted As Boolean
  15.     hNameMaps As Long
  16.     sProgress As String
  17. End Type
  18. Private Type SYSTEMTIME
  19.     wYear As Integer
  20.     wMonth As Integer
  21.     wDayOfWeek As Integer
  22.     wDay As Integer
  23.     wHour As Integer
  24.     wMinute As Integer
  25.     wSecond As Integer
  26.     wMilliseconds As Integer
  27. End Type
  28. Private Const GENERIC_WRITE = &H40000000
  29. Private Const OPEN_EXISTING = 3
  30. Private Const FILE_SHARE_READ = &H1
  31. Private Const FILE_SHARE_WRITE = &H2
  32. Private Const FO_DELETE = &H3
  33. Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
  34. Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As Long) As Long
  35. Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
  36. Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
  37. Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
  38. Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long
  39. Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
  40. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  41. Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
  42. Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
  43. Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
  44. Private Sub Form_Load()
  45.     'KPD-Team 1998
  46.     'URL: http://www.allapi.net/
  47.     'E-Mail: KPDTeam@Allapi.net
  48.     Dim lngHandle As Long, SHDirOp As SHFILEOPSTRUCT, lngLong As Long
  49.     Dim Ft1 As FILETIME, Ft2 As FILETIME, SysTime As SYSTEMTIME
  50.     'Set the dialog's title
  51.     CDBox.DialogTitle = "Choose a file ..."
  52.     'Raise an error when the user pressed cancel
  53.     CDBox.CancelError = True
  54.     'Show the 'Open File'-dialog
  55.     CDBox.ShowOpen
  56.     'Create a new directory
  57.     CreateDirectory "C:\KPD-Team", ByVal &H0
  58.     'Copy the selected file to our new directory
  59.     CopyFile CDBox.filename, "C:\KPD-Team\" + CDBox.FileTitle, 0
  60.     'Rename the file
  61.     MoveFile "C:\KPD-Team\" + CDBox.FileTitle, "C:\KPD-Team\test.kpd"
  62.     'Open the file
  63.     lngHandle = CreateFile("C:\KPD-Team\test.kpd", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
  64.     'Get the file's size
  65.     MsgBox "The size of the selected file is" + Str$(GetFileSize(lngHandle, lngLong)) + " bytes."
  66.     'Get the fil's time
  67.     GetFileTime lngHandle, Ft1, Ft1, Ft2
  68.     'Convert the file time to the local file time
  69.     FileTimeToLocalFileTime Ft2, Ft1
  70.     'Convert the file time to system file time
  71.     FileTimeToSystemTime Ft1, SysTime
  72.     MsgBox "The selected file was created on" + Str$(SysTime.wMonth) + "/" + LTrim(Str$(SysTime.wDay)) + "/" + LTrim(Str$(SysTime.wYear))
  73.     'Close the file
  74.     CloseHandle lngHandle
  75.     'Delete the file
  76.     DeleteFile "C:\KPD-Team\test.kpd"
  77.     With SHDirOp
  78.         .wFunc = FO_DELETE
  79.         .pFrom = "C:\KPD-Team"
  80.     End With
  81.     'Delete the directory
  82.     SHFileOperation SHDirOp
  83.     End
  84. End Sub


не знаю, как это впишется в 2008 студию...
кстати, под дотнет там тоже еть пример:
  1. Imports System
  2. Imports System.IO
  3. Public Module modmain
  4.    Sub Main()
  5.       'KPD-Team 2001
  6.       'URL: http://www.allapi.net/dotnet/
  7.       'E-Mail: KPDTeam@Allapi.net
  8.       Console.WriteLine("Autoexec.bat was created on " + _
  9.          File.GetCreationTime("c:\autoexec.bat").ToString)
  10.    End Sub
  11. End Module

Ответить

Номер ответа: 5
Автор ответа:
 Sergey



Вопросов: 39
Ответов: 87
 Профиль | | #5 Добавлено: 29.04.09 16:30
И как объявить имя файла, когда их много? Я так понимаю, что lngHandle это и есть имя файла.

Ответить

Номер ответа: 6
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #6
Добавлено: 29.04.09 16:34
lngHandle -Это не имя файла, это указатель для твоего процесса на файл C:\KPD-Team\test.kpd, пока ты не закроешь его CloseHandle, виндус не даст удалить этот файл
И как объявить имя файла, когда их много?

Странный, ты... Где их много? Куда объявить? Что ты вообще делаешь?

Ответить

Номер ответа: 7
Автор ответа:
 Sergey



Вопросов: 39
Ответов: 87
 Профиль | | #7 Добавлено: 29.04.09 16:37
Имеется множество файлов. Как получить имя и дату создания каждого файла?

Ответить

Номер ответа: 8
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #8
Добавлено: 29.04.09 16:43
Сделать цикл и в цикле получать

Ответить

Номер ответа: 9
Автор ответа:
 Sergey



Вопросов: 39
Ответов: 87
 Профиль | | #9 Добавлено: 29.04.09 16:53
Arvitaly, а можно небольшой пример, что-то не могу понять...

Ответить

Номер ответа: 10
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #10
Добавлено: 29.04.09 21:38
Что именнно ты не можешь понять?

Ответить

Номер ответа: 11
Автор ответа:
 Sergey



Вопросов: 39
Ответов: 87
 Профиль | | #11 Добавлено: 30.04.09 10:14
Можно пример кода.

Ответить

Номер ответа: 12
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #12 Добавлено: 30.04.09 10:42
На Делфи я писал курсовик для студента такой, точнее это часть проекта.

Ответить

Номер ответа: 13
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #13 Добавлено: 01.05.09 21:01
Что быстрее работает в VB 2008: API-функции или стандартные функции VB?


1) Смотря какие функции
2) Очень много функций .NET являются обертками к функциями Win32API
3) API скорее всего будут быстрее.
4) Реально НЕНАМНОГО
5) При правильной работе с файловой системой эта разница будет ничтожно мала по сравнению с временем на выполнение дисковых операций

Sergey пишет:
Тогда как получить время файла с API?

Не уточнил какое время (а их 3)
  1. System.IO.File.Get******Time


От АПИ в данном случае ты не получишь преимуществ (желающие поспорить - жду код, юзающий API, который хотя бы на 5% будет быстрее чем дотнетовский)

Ответить

Номер ответа: 14
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #14
Добавлено: 01.05.09 21:49
жду код, юзающий API, который хотя бы на 5% будет быстрее чем дотнетовский)


Странное желание, ведь
Очень много функций .NET являются обертками к функциями Win32API
, т.е. по сути эти функции будут работать ровно настолько дольше, сколько винде нужно чтобы сделать call функции, написанной уже ими. А с учетом того, что им явно виднее как работать со своими API, код на VB6 не может быть быстрее.

Ответить

Номер ответа: 15
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #15 Добавлено: 01.05.09 22:28
Arvitaly
1) Читаем внимательнее вопрос. Украина - не Россия. И VB6 - не VB 2008
2) Тебе явно виднее? Жду код.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам