Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

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

 

  Вопрос: Помогите разобраться. Добавлено: 15.02.10 09:01  

Автор вопроса:  F@got | Web-сайт: antivirusfagot.blogspot.com | ICQ: 209371 

Ответить

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

Номер ответа: 16
Автор ответа:
 F@got



ICQ: 209371 

Вопросов: 4
Ответов: 39
 Web-сайт: antivirusfagot.blogspot.com
 Профиль | | #16
Добавлено: 15.02.10 12:55
To Just

З.Ы. Зависит напрямую от производительности ЦП.

Ответить

Номер ответа: 17
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #17 Добавлено: 15.02.10 13:03
прога висит когда начинает добавлять в RichTextBox!
вывод:
убери RichTextBox и не будет виснуть! ))

а если серьезно то действительно все упирается в возможности RichTextBox, я где тока мог понапихал doevents а прога все равно виснит

выходов тут 3:
- оставить как есть
- найти супер способ копирования в RichTextBox
- и что самое вероятное, найти замену RichTextBox (скорей всего замену в лучшем случае удастца найти в dll без исходников)

Ответить

Номер ответа: 18
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #18 Добавлено: 15.02.10 13:05

To Just
З.Ы. Зависит напрямую от производительности ЦП.

и от настроек, состояния и самой винды

Ответить

Номер ответа: 19
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #19 Добавлено: 15.02.10 13:07
найти в dll без исходников

точнее в ocx

Ответить

Номер ответа: 20
Автор ответа:
 F@got



ICQ: 209371 

Вопросов: 4
Ответов: 39
 Web-сайт: antivirusfagot.blogspot.com
 Профиль | | #20
Добавлено: 15.02.10 13:10
To Just

Верно, C++ рулит...

Ответить

Номер ответа: 21
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #21
Добавлено: 15.02.10 18:44
C# feat. C++ рулит.

Ответить

Номер ответа: 22
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #22
Добавлено: 15.02.10 22:54
Just, куда столько DoEvents) Время открытия только увеличивается...
Между прочим блокнот тоже не особо хорошо работает с большими файлами, особенно если им открыть не текстовый файл а экзешник какой-нибудь=)

Ответить

Номер ответа: 23
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #23
Добавлено: 16.02.10 02:58
а если грузить в память, а потом нужными кусками в текст добавлять?

Ответить

Номер ответа: 24
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #24 Добавлено: 16.02.10 13:50
2 F@got
придумал как ускорить загрузку файлов (у меня меньше чем за 30 сек грузится 10 мб файл)
но будет работать только с текстовыми документами...

  1.  
  2. Private Sub FileToRichTextBox1(sFilePath As String)
  3. On Error GoTo AnotherMode
  4.  
  5. Dim lFileNum As Long
  6. Dim lFileLength As Long
  7. Dim sFileText As String
  8.  
  9. lFileNum = FreeFile
  10. Open sFilePath For Input As #lFileNum
  11. lFileLength = LOF(lFileNum)
  12.  
  13. 'MsgBox lFileLength
  14. If lFileLength > 10000000 Then   ' ~10 мб
  15.     Dim sAnswer As String
  16.     sAnswer = MsgBox("Файл слишком большой!" & vbCrLf & "Все равно открыть?", vbYesNo + vbInformation, "Блокнот")
  17.     If sAnswer <> vbYes Then Exit Sub
  18. End If
  19.  
  20.     sFileText = Input$(lFileLength, #lFileNum)
  21.     Close #lFileNum
  22.     RichTextBox1.Text = sFileText
  23.  
  24. Exit Sub
  25. AnotherMode:
  26. On Error GoTo 0
  27. Close #lFileNum
  28. lFileNum = FreeFile
  29. Open sFilePath For Binary Access Read As #lFileNum
  30. MsgBox "другой способ открытия"
  31. Close #lFileNum
  32. End Sub

Ответить

Номер ответа: 25
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #25 Добавлено: 16.02.10 13:55
забыл изменить, сорри

замени это
  1. If sAnswer <> vbYes Then Exit Sub

на это
  1. If sAnswer <> vbYes Then Close #lFileNum: Exit Sub

Ответить

Номер ответа: 26
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #26 Добавлено: 16.02.10 14:01
да и еще...
на др способ окрытия тоже стоит поставить проверку файла на размер
только там уже стоит ставить ограничения на файлы меньшего размера )

Ответить

Номер ответа: 27
Автор ответа:
 F@got



ICQ: 209371 

Вопросов: 4
Ответов: 39
 Web-сайт: antivirusfagot.blogspot.com
 Профиль | | #27
Добавлено: 16.02.10 14:14
To Just

Спасибо!
Но Актуальность блокнота состоит именно в возможности открывать файлы любого типа, т.е. всех расширений, поэтому только текстовые не подходят...

Ответить

Номер ответа: 28
Автор ответа:
 F@got



ICQ: 209371 

Вопросов: 4
Ответов: 39
 Web-сайт: antivirusfagot.blogspot.com
 Профиль | | #28
Добавлено: 16.02.10 14:19
Необходимость открытия файлов более 1 мб в блокноте минимальна. Поэтому было бы неплохо подумать над кодом универсальным т.е. открывающем все форматы, но с расчетом не более чем на 1 мб.

Ответить

Номер ответа: 29
Автор ответа:
 F@got



ICQ: 209371 

Вопросов: 4
Ответов: 39
 Web-сайт: antivirusfagot.blogspot.com
 Профиль | | #29
Добавлено: 16.02.10 14:26
Just

На моей машине открытие файла (jpg) при использовании нижеприведенного кода размером в 650кб уходит более 10 минут
Файл размером 1,4 мб не открывает совсем (mp3)

  1.  
  2. Private Sub FileToRichTextBox1(sFilePath As String)
  3. Dim fileLength As Long
  4. Dim BlockSize As Long
  5. Dim IsCanceled As Boolean
  6.  Dim FileNum As Integer
  7.  FileNum = FreeFile
  8.  Dim strFileText As String
  9.   
  10.          BlockSize = 1000000
  11.   
  12.          FileNum = FreeFile
  13.          Open sFilePath For Binary Access Read As #FileNum
  14.          fileLength = LOF(FileNum)
  15.          
  16.          If fileLength > BlockSize Then
  17.          Dim strAnswer As String
  18.          strAnswer = MsgBox("Файл слишком большой!" & vbCrLf & "Все равно открыть?", vbYesNoCancel + vbInformation, "Блокнот")
  19.          If strAnswer <> vbYes Then Exit Sub
  20.          End If
  21.          
  22.          Do Until fileLength = Loc(FileNum)
  23.          'MsgBox "LOF " & LOF(FileNum)
  24.          'MsgBox "Loc " & Loc(FileNum)
  25.          'MsgBox "EOF " & EOF(FileNum)
  26.   
  27.                  DoEvents
  28.                  ' Adjust blocksize at end so we don't read too much data
  29.                  If fileLength - Loc(FileNum) <= BlockSize Then
  30.                   DoEvents
  31.                          BlockSize = fileLength - Loc(FileNum)
  32.                  DoEvents
  33.                  End If
  34.                  
  35.                  DoEvents
  36.                  strFileText = Space$(BlockSize)       '// Allocate the read buffer
  37.                  DoEvents
  38.                  Get #FileNum, , strFileText                 '// Read a block of data
  39.                  DoEvents
  40.                  
  41.                  If IsCanceled = True Then ' если пользователь отменил (кнопка нужна)
  42.                  DoEvents
  43.                  IsCanceled = False
  44.                  Exit Sub
  45.                  End If
  46.                  
  47.                  DoEvents
  48.                  RichTextBox1.Text = RichTextBox1.Text + strFileText
  49.                  DoEvents
  50.                  RichTextBox1.SelStart = Len(RichTextBox1.Text) ' курсор в конце текста
  51.                  'MsgBox strFileText
  52.         DoEvents
  53.         Loop
  54.          DoEvents
  55.          Close #FileNum
  56.   
  57.   End Sub
  58.  
  59.  
  60.  

Ответить

Номер ответа: 30
Автор ответа:
 F@got



ICQ: 209371 

Вопросов: 4
Ответов: 39
 Web-сайт: antivirusfagot.blogspot.com
 Профиль | | #30
Добавлено: 16.02.10 14:29
Но в принципе не плохие результаты, так как при своей работе в том числе и кодинг, таких больших файлов не встречается, в принципе можно было бы и остановится на достигнутых результатах :) но как говорится нет пределу совершенству! :)

Ответить

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

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



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