Как в ассемблерном тексте заменить TAB на пробел???

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

Как в ассемблерном тексте заменить TAB на пробел???

Сообщение Dimon111 » 04.12.2008 (Чт) 15:30

Как в ассемблерном тексте заменить TAB на пробел??? Чтобы строки не съехали. Может где - то есть алгоритм.
Подскажите.
Спасибо.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение Viper » 04.12.2008 (Чт) 16:06

И что же такое "ассемблерный текст"? А заменить то просто - Replace.
Весь мир матрица, а мы в нем потоки байтов!

Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение Dimon111 » 04.12.2008 (Чт) 16:10

Replace это тоже самое, что замена в редакторе. От этого разъезжаются строки и программа становится нечитаемой. Корректировать вручною 5000 строк не хочется.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение Viper » 04.12.2008 (Чт) 16:18

Dimon111 писал(а):Replace это тоже самое, что замена в редакторе. От этого разъезжаются строки и программа становится нечитаемой. Корректировать вручною 5000 строк не хочется.
Что ли в редакторе TAB на пробел заменить? Так все равно Replace. И ничего не расползается по идее.
З.Ы. А чем TAB то помешали, с ними удобнее, чем с пробелами. Хорошо структурированный код получается.
Весь мир матрица, а мы в нем потоки байтов!

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение Денис » 04.12.2008 (Чт) 16:27

Ах вон оно что! Один таб заменить на несколько пробелов (разное количество для каждой строки). Ну знаете-ли, это алгоритм самой табуляции.
Тоесть человек просит заменить ему табулятор на алгоритм табулятора, реализованный через пробелы.
:lol:
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение alibek » 04.12.2008 (Чт) 16:33

А что было сделано? И с чем возникла проблема?
Задача довольно простая. Расставляешь позиции табуляции (либо с интервалом, либо вручную), а затем парсишь по строкам, заменяя табулятор на нужное количество пробелов, соответствующие нужной позиции табулятора.
Lasciate ogni speranza, voi ch'entrate.

Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение Dimon111 » 04.12.2008 (Чт) 17:36

Похоже никто не сталкивался. Текст с TAB поразному выглядит в разных редакторах. Плохо выводится на принтер.

Вкратце попробую объяснить:
Там где метка из 7 символов вместо TAB нужно вставлять один пробел.

Там где метка из 6 символов вместо TAB нужно вставлять два пробела.

Таких ситуаций множество. Несоблюдение приводит к стому, что текст на языке ассемблера не выглядит колонками.

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение Joo » 04.12.2008 (Чт) 18:24

Dimon111 писал(а):Похоже никто не сталкивался. Текст с TAB поразному выглядит в разных редакторах. Плохо выводится на принтер.

Вкратце попробую объяснить:
Там где метка из 7 символов вместо TAB нужно вставлять один пробел.

Там где метка из 6 символов вместо TAB нужно вставлять два пробела.

Таких ситуаций множество. Несоблюдение приводит к стому, что текст на языке ассемблера не выглядит колонками.


ППЦ.
Пиши в нормальном редакторе, структурируй табами, печатай с того же редактора и будет тебе счастье.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение iGrok » 04.12.2008 (Чт) 19:25

А может, попробовать переключаться в редакторах на моноширинные шрифты? Courier, к примеру.. Или это совсем не помогает?
label:
cli
jmp label

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение tyomitch » 05.12.2008 (Пт) 11:02

Товарищи, ну вы даёте.
Совершенно стандартная задача.

Код: Выделить всё
Sub Main()
Open "input.txt" For Input As 1
Open "output.txt" For Output As 2
While Not EOF(1)
    Dim l As String
    Line Input #1, l
    Dim p As Integer, i As Integer
    p = 0
    For i = 1 To Len(l)
        Dim c As String
        c = Mid(l, i, 1)
        If c = vbTab Then
            Dim r As Integer
            r = (p \ 8) * 8 + 8
            Print #2, Space(r - p);
            p = r
        Else
            p = p + 1
            Print #2, c;
        End If
    Next
    Print #2,
Wend
Close 1, 2
End Sub
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение alibek » 05.12.2008 (Пт) 11:36

tyomitch, посимвольный вывод это круто :)
Чем InStr не подошел?
Lasciate ogni speranza, voi ch'entrate.

Dimon111
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 28.01.2008 (Пн) 22:11

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение Dimon111 » 05.12.2008 (Пт) 11:38

Снимаю шляпу перед tyomitch.

Обе колонки обработаны правильно на 100%. Третья - на 90. Теперь поправить ручками не составит труда.

Вы облегчили мне тяжелую задачу. Спасибо.

Вкратце опишу проблему:
Итак, допустим что от начала строки имеется 7 символов и TAB. Tab в этом случае будет выглядить как один пробел (при ширине TAB = 8 )
Простая замена добавит 8 пробелов и последующая строка съедет вправо на 7 символов.

Хочу предостеречь от пользования TABами. В редакторе (даже в Word'е) при масштабировании некоторые строки тоже съезжают. Таким образом текст выглядит колонками только при определенном масштабе. Это глюк, хотя в редакторе стоит моноширный курьер.

Проблема решена. Всем спасибо за участие.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение alibek » 05.12.2008 (Пт) 11:40

Dimon111 писал(а):Хочу предостеречь от пользования TABами. В редакторе (даже в Word'е) при масштабировании некоторые строки тоже съезжают. Таким образом текст выглядит колонками только при определенном масштабе. Это глюк, хотя в редакторе стоит моноширный курьер.

Если что, то в редакторах (и в Word тоже) можно выставлять позиции табуляции.
Lasciate ogni speranza, voi ch'entrate.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как в ассемблерном тексте заменить TAB на пробел???

Сообщение iGrok » 05.12.2008 (Пт) 20:03

alibek писал(а):
Dimon111 писал(а):Хочу предостеречь от пользования TABами. В редакторе (даже в Word'е) при масштабировании некоторые строки тоже съезжают. Таким образом текст выглядит колонками только при определенном масштабе. Это глюк, хотя в редакторе стоит моноширный курьер.

Если что, то в редакторах (и в Word тоже) можно выставлять позиции табуляции.

А большинство сред разработки спрашивают, что использовать. Таб, или соответствующее кол-во пробелов.
label:
cli
jmp label


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 55

    TopList