Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Выравнивание текста в txt файле - VB


Автор: ASSEI 22.3.2018, 10:31
Ребята Здравствуйте! подскажи как выравнивается текст который записан в текстовом файле например по правому краю листа А4., у меня получилось так 
Код

.....
Dim TxtLen As Integer
Dim Spase As Integer
Open "Согласие.txt" For Output As #1
TxtLen = Len("Ф.И.О.: " & Text1)
Spase = 150 - TxtLen
 Print #1, Spc(Spase); "Ф.И.О.:"  & Text1
Close #1
.....

у меня на листе строки начинаются с новой строки с левой стороны листа, я честно говоря не пойму как произвести расчет? что бы строка начиналась с правой стороны, дело в том, что не возможно знать сколько символов будет в той или иной строке

Автор: Akina 22.3.2018, 11:50
Не надо производить расчёт. Храните строки текста в строковых переменных фиксированной длины, а вставку выполняйте оператором RSET():

Код

Dim Buffer(1 to 60) As String * 80 ' или сколько надо в символах
' ...
Rset Buffer(i) = strData(i) ' strData помещается в Buffer с выравниванием по правому краю

Автор: ASSEI 22.3.2018, 12:03
Код

Dim Buffer(1 To 60) As String * 80 

Open "01.txt" For Output As #1
Dim i As Object
i = ("фио.: " & Text1.Text)
RSet Buffer(i) = strData(i)

правильно ли я записал? но при запуске ошибку выдает

Автор: Akina 22.3.2018, 12:33
Цитата(ASSEI @  22.3.2018,  13:03 Найти цитируемый пост)
правильно ли я записал?

Конечно, нет, иначе и ошибки бы не было... За каким хреном нужны обрамляющие скобки в строке 5??? Нафига нужна переменная i, да ещё объектного типа? Откуда возьмётся массив strData?

Автор: ASSEI 22.3.2018, 14:25
А можно как то по подробнее с массивами я вообще первый раз встречаюсь 

Автор: Akina 22.3.2018, 16:03
Код
Const StringLength As Integer = 80 ' стандартный DOS-текст содержит 80 символов на строку

Sub WriteToFile(ArrayToWrite() As String, Filename As String)
Dim Buffer As String * StringLength
Dim From As Integer, Till As Integer, i As Integer, f As Integer

From = LBound(ArrayToWrite)
Till = UBound(ArrayToWrite)
f = FreeFile
Open Filename For Output As #f
For i = From To Till
    Buffer = Space(StringLength)
    RSet Buffer = ArrayToWrite(i)
    Print #f, Buffer;
    If i < Till Then Print #f,
Next i
Close #f
End Sub

Sub test()
Dim ar(2 To 5) As String
ar(2) = "str1"
ar(3) = "string2"
ar(4) = "string no 3"
ar(5) = "last string"
Call WriteToFile(ar(), "c:\tmp\test.txt")
End Sub

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)