Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

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

 

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

Автор вопроса:  F@got | Web-сайт: antivirusfagot.blogspot.com | ICQ: 209371 
Доброго времени суток форумчане!

Проблема в следующем, пишу текстовый редактор :)
При перетаскивании файла в мой открытый блокнот, файл открывается не полностью. Т.Е. Если мы берем к примеру .exe файл весом 200 Кб. и Открываем его например в обычном "виндовом" блокноте то этот файл открывается в нем например на 300 строк, а в моем только на 40 :(
К слову сказать если открывать файл в моем блокноте через COMMANDDIALOG т.е через "открыть файл" (не посредством Drag&Drop) то все открывается полностью.
Ниже привожу код открытия через так называемый Drag&Drop
через который не полностью открывается файл.
Заранее благодарю за ответы, и участие в моем вопросе.


 Private Sub RichTextBox1_OLEDragDrop(Data As RichTextLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
 On Error Resume Next

 Dim i As Integer
 Do
 DoEvents
 i = i + 1
 FileToRichTextBox1 Data.Files.Item(i)

 Loop Until Len(Data.Files.Item(i)) < 1
 End Sub
  
 Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)

 On Error Resume Next

 Dim i As Integer
 Do
 DoEvents
 i = i + 1
 FileToRichTextBox1 Data.Files.Item(i)

 Loop Until Len(Data.Files.Item(i)) < 1
 End Sub
  
 Private Sub FileToRichTextBox1(sFilePath As String)
 Dim FileNum As Integer
 Dim txt As String
 Dim alltxt As String
 FileNum = FreeFile
 'Открываем файл в режиме чтения
 Open sFilePath For Input As FileNum
   'цикл выполняется, пока конец файла не достигнут
   Do Until EOF(FileNum)
    'записывает в переменную txt
    Line Input #FileNum, txt
    'каждая строка с новой строки
    alltxt = alltxt + txt + vbCrLf
  Loop
RichTextBox1.Text = alltxt
 End Sub

Ответить

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

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



Вопросов: 4
Ответов: 330
 Профиль | | #1 Добавлено: 15.02.10 09:35
F@got
Привет! А ты уже с утра начал программировать? )))
может лучше я скину тебе исходники блакнотов? шучу!
хотя у меня вроде валялся неплохой пример... )))

Ответить

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



ICQ: 209371 

Вопросов: 4
Ответов: 39
 Web-сайт: antivirusfagot.blogspot.com
 Профиль | | #2
Добавлено: 15.02.10 09:53
Здравствуй Just

Да ни дня без кодинга :)
Вот по твоему примеру открытия файла при перетаскивании в открытый блокнот через драг эн дроп, маленькая трабла. Мне кажется ноги ростут именно в этом отрезке кода.

Ответить

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



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


AWP


  
dim FS as string

FS=space(filelen(FileName))

open FileName for binary as #1

  get #1,1,FS

close #1

RichTextBox1.text=FS




Кстати лучше.


кстати он прав )

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #4 Добавлено: 15.02.10 10:06
вот его пример под твой код
  1.  
  2. Private Sub FileToRichTextBox1(sFilePath As String)
  3. Dim FileNum As Integer
  4. FileNum = FreeFile
  5. Dim strFileText As String
  6.  
  7.     strFileText = Space(FileLen(sFilePath))
  8.  
  9.     DoEvents
  10.     Open sFilePath For Binary As #FileNum
  11.     DoEvents
  12.     Get #FileNum, 1, strFileText
  13.     DoEvents
  14.     Close #FileNum
  15.     DoEvents
  16.     
  17.     RichTextBox1.Text = strFileText
  18. End Sub

Ответить

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



ICQ: 209371 

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

Just спасибо тебе дружище за помощь!
Все работает супер!

PS. Будут проблемы с вредоносными программами пиши, всегда помогу!

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #6 Добавлено: 15.02.10 10:46
спс большое! но пока проблем таких не намечалось... но я учту! ))
кстати пару месяцев назад написал скрипт (задолбался по друзьям ходить и настраивать вручную) для очиски xp после вируса
http://narod.ru/disk/15518709000/Restore_XP_after_virus.vbs.html
будет интересно - взгляни как я поизвращался на vbs )

Ответить

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



ICQ: 209371 

Вопросов: 4
Ответов: 39
 Web-сайт: antivirusfagot.blogspot.com
 Профиль | | #7
Добавлено: 15.02.10 11:41
To Just
Я просмотрел твой скрипт, да полезная вещь.
Очень рекомендую включить в твой скрипт перезапись следующих ключей реестра
так как многие вредоносные программы создают свою запись в реестре на автозапуск в этих ветках реестра,
и если вредоносная программа удалена а запись реестра осталась, то при старте системы выдается ошибка о том
что система не нашла указанный файл для запуска.

Пример вредоносной программы записавшейся в ключ реестра для запуска вместе с ситемой
после Explorer.exe прописалась на запуск вредоносная программа.
  1.  
  2. HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell", "Explorer.exe system_v.exe" <br>



Аналогичный пример со второй веткой реестра.
  1.  
  2. HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit", "userinit.exe,system_v.exe" <br>



Дополнения рекомендуемые для внесения в скрипт лечения системы:
  1.  
  2. Set s = CreateObject("Wscript.Shell")
  3.      s.RegWrite "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell", "Explorer.exe"
  4.  
  5.  
  6. Set s = CreateObject("Wscript.Shell")
  7.      s.RegWrite "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit", "userinit.exe,"

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #8 Добавлено: 15.02.10 11:52
спс! можешь неверить но я уже это добавил в свой код )
просто перезалить немогу обновление (ссылка др будет)
но все равно спасибо
p.s. правда я с эксплорером побоялся без пути записывать (определяю папку винды)

Ответить

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



ICQ: 209371 

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

По поводу эксплорера можешь не боятся, винда использует в любом случае путь по умолчанию.
Поэтому эксплорер можешь писать в скрипте без пути.

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #10 Добавлено: 15.02.10 12:10
могу предложить альтернативу кода открытия файла... )
попытался решить некоторые проблемы:
- возможность остановки загрузки
- предупреждать если файл слишком большой (винда может надолго повиснуть)
- и если все же загрузка большого файла начата то загружать частями,так хоть прога поживей выглядит )


BlockSize ставь на свое усмотрение, на разных компах - будет разное поведение (в том числе из-за скорости)

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

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #11 Добавлено: 15.02.10 12:13
забыл...
  1.  
  2. Dim fileLength As Long
  3. Dim BlockSize As Long
  4. Dim IsCanceled As Boolean

Ответить

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



ICQ: 209371 

Вопросов: 4
Ответов: 39
 Web-сайт: antivirusfagot.blogspot.com
 Профиль | | #12
Добавлено: 15.02.10 12:38
To Just
К сожалению и с первым и со вторым кодом, файлы начиная уже примерно с 500 кб, загрузка зависает намертво, вот сижу уже 6 минут. А вот файлы менее этого веса, загружаются нормально.
Может подождать минут 20? тогда загрузит? В любом случае с мелкософтным по загрузке файлов ему пока не сравнится :(

Все равно спасибо :) !

Ответить

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



ICQ: 209371 

Вопросов: 4
Ответов: 39
 Web-сайт: antivirusfagot.blogspot.com
 Профиль | | #13
Добавлено: 15.02.10 12:45
Первый код зависал намертво, второй листниг очень даже хорош!! Справился все таки он с барьером в 600 кб. ! правда по времени минут 10 но справился! Будем повышать барьер! :)

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #14 Добавлено: 15.02.10 12:51
у меня с последним кодом exe-файл 1,14 МБ грузился мин 2
я вручную счетал так как комп висел )))

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #15 Добавлено: 15.02.10 12:55
попробуй поэксперементируй с BlockSize
в любом случае мы делаем примитивную загрузку файлов до мб
для загрузки файлов больших размеров я подозреваю нада будет еще 2 блокнота написать )

Ответить

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

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



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