Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: В текстовом файле пропадают запятые Добавлено: 07.07.06 07:47  

Автор вопроса:  [root] | Web-сайт: bit.pirit.info
Ребята, тут прогу пишу

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

Нужно, потому что по шаблону текстовика потом делаются хтмл'ки

Все работает, только в том место где в исходнике встречается запятая, она пропадает и ставится Enter.

Как поправить? Если есть мысли как код оптимизировать жду

Option Explicit
'Dim strName As String
Dim FileNum1 As Byte
Dim FileNum2 As Byte
Dim strText As String
Dim strFileName1 As String

Private Sub Command1_Click()
Dim fileno As Integer
Dim strFileName As String

With CommonDialog1
   .FileName = ""
   .Filter = "Все файлы (*.*)|*.*"
   .Flags = cdlOFNFileMustExist + cdlOFNPathMustExist
   .DialogTitle = "Выберите файл для открытия"
   .ShowOpen
   If .FileName = "" Then Exit Sub
   strFileName = .FileName
End With

FileNum1 = FreeFile
Open strFileName For Input As FileNum1
While Not EOF(FileNum1)
    Input #FileNum1, strText
    FileNum2 = FreeFile
    Open strFileName1 For Append As FileNum2
        strText = Replace(strText, "  ", "=")
        Print #FileNum2, strText
    Close FileNum2
Wend
Close FileNum1
Kill App.Path & "\temp.txt"
End
End Sub

Private Sub Form_Load()
Dim fileno As Integer


With CommonDialog1
   .FileName = ""
   .Filter = "Все файлы (*.*)|*.*"
   .Flags = cdlOFNFileMustExist + cdlOFNPathMustExist
   .DialogTitle = "Выберите файл для открытия"
   .ShowOpen
   If .FileName = "" Then Exit Sub
   strFileName1 = .FileName
End With

FileNum1 = FreeFile
Open strFileName1 For Input As FileNum1
While Not EOF(FileNum1)
    Input #FileNum1, strText
    FileNum2 = FreeFile
    Open App.Path & "\temp.txt" For Append As FileNum2
        Print #FileNum2, Trim(strText)
    Close FileNum2
Wend
Close FileNum1
Kill strFileName1
End Sub

Ответить

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

Номер ответа: 1
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #1
Добавлено: 07.07.06 07:48
Если нужно могу выложить исходный и конечный файлы для понимания

Ответить

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


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #2 Добавлено: 07.07.06 16:29
'Input #FileNum1, strText
Line Input #FileNum1, strText

Ответить

Номер ответа: 3
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #3
Добавлено: 07.07.06 17:27
Я все монипуляции со строками вписал в Form_Load(). На выходе - уже форматированый файл temp.txt.
Дальше ты, наверное, сам разберешься. :)

Тока я не понял:

1. Зачем открывать и закрывать файл в цикле? (это жутко тормозит прогу)

2. Зачем нужно сначала создавать temp.txt в Form_Load(), а потом выбирать его в Command1._Click()? (-судя по твоему описанию алгоритма)

3. Зачем удалять исходный файл (Kill strFileName1), ведь он, наверное, может ещё понадобиться?

Private Sub Form_Load()
Dim fileno As Integer
Dim s As String

With CommonDialog1
   .FileName = ""
   .Filter = "Âñå ôàéëû (*.*)|*.*"
   .Flags = cdlOFNFileMustExist + cdlOFNPathMustExist
   .DialogTitle = "Âûáåðèòå ôàéë äëÿ îòêðûòèÿ"
   .ShowOpen
   If .FileName = "" Then Exit Sub
   strFileName1 = .FileName
End With

FileNum1 = FreeFile
Open strFileName1 For Input As FileNum1
While Not EOF(FileNum1)
    Line Input #FileNum1, strText
    s = s + Trim(Replace(strText, "  ", "=";)) + vbCrLf
Wend

FileNum2 = FreeFile
Open App.Path & "\temp.txt" For Output As FileNum2
    Print #FileNum2, s
Close FileNum2
Close FileNum1
Kill strFileName1
End Sub


Удачи!

Ответить

Номер ответа: 4
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #4
Добавлено: 07.07.06 17:30
Чё то с русскими буквами фигня какая - то произошла :)))

Ответить

Номер ответа: 5
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #5
Добавлено: 07.07.06 18:25
Серёга и HACKER спасибо
Завтра на работе проверю, все
Я код делал на скорую руку, так что особо не думал, но весь вопрос был, как я думал что Replace чего не так меняет.
А тут оказывается input касячит, лана сеньку завтра отпишусь
ЗЫ исходный удалил и из темпа заново записал, можно в принципе output'ом затирать, так захотелось

Ответить

Номер ответа: 6
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #6
Добавлено: 08.07.06 08:52
Так всего гуд, исправил лишь:

Так вот правильнее



FileNum1 = FreeFile
Open strFileName1 For Input As FileNum1
While Not EOF(FileNum1)
    Line Input #FileNum1, strText
    s = s + Replace(Trim(strText), "  ", "=";) + vbCrLf
Wend
Close FileNum1

FileNum2 = FreeFile
Open strFileName1 For Output As FileNum2
    Print #FileNum2, s
Close FileNum2

Ответить

Страница: 1 |

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



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