Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Visual Basic: Общие вопросы > Помогите написать алгоритм обработки строк строкового массива |
Автор: Димон Безпарольный 15.06.18, 11:41 |
Массив типа: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ! 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char " Нужно убрать часть с комментариями "// Code for char !" и записать массив в файл командой Print #1(эта часть работает) Не могу сообразить как в строковом массиве выкинуть часть строки с комментариями... Спасибо. |
Автор: Димон Безпарольный 15.06.18, 14:33 |
Делаю так: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Substring1 = "" TMP2 = 1 For TMP1 = 1 To Len(Substring) - 1 If (Mid(Substring, TMP1, 1)) = "/" Then TMP2 = 0 End If If (Mid(Substring, TMP1, 1)) = vbCr Then TMP2 = 1 End If If (TMP2 = 1) Then Substring1 = Substring1 & Mid(Substring, TMP1, 1) End If Next Но при этом копируется только первая строка. Если инвертировать условие If (TMP2 = 0), то копируются только все коментарии. Почему так? вроде должно все работать. В строке If (Mid(Substring, TMP1, 1)) = vbCr вместо критерия vbCr ставил 12 и 13 - не помогает. |
Автор: Mikle 15.06.18, 15:46 |
На вскидку, может где ошибся: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> dim s as string dim p as long nf1=freefile open "myinfile" for input as #nf1 nf2=freefile open "myoutfile" for input as #nf2 while not eof (nf1) line input #nf1, s p=instr(1,s,"//")-1 if p>0 then s=left(s,p) print #nf2, , s wend close #nf1 close #nf2 |
Автор: Димон Безпарольный 15.06.18, 17:02 |
Да, с line input #nf1, s все хорошо получается. Забыл сказать что массив я получаю не из файла, а из буфера обмена ProcessString = Clipboard.GetText(vbCFText). Хотя идея просто создать промежуточный файл вполне годится. Спасибо. вот рабочий код: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Open "TMP.txt" For Output As #2 Print #2, Substring Close #2 Open "TMP.txt" For Input As #3 While Not EOF(3) Line Input #3, Substring1 TMP2 = InStr(1, Substring1, "//") - 1 If TMP2 > 0 Then Substring1 = Left(Substring1, TMP2) Print #1, , Substring1 Wend Close #3 Kill "TMP.txt" |