powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Удалить строка текстового файла
34 сообщений из 34, показаны все 2 страниц
Удалить строка текстового файла
    #34978017
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !!!!

У меня ест текстовый файл в таком виде:

Отчет за 20.11.07
-----------------------------------------
Продукт | Приход | Расход | Остаток
-----------------------------------------
пппппп 2000 1000 1000
рррррр 3000 2000 1000
оооооо 5600 1500 4100
.
.
.
рррррр 3000 2000 1000
-----------------------------------------
гл. бухгалтер _______________________

один файл содержит несколько отчетов, например: отчет за 21, 22 …..
задача: удалить все записи кроме эти строки…

пппппп 2000 1000 1000
рррррр 3000 2000 1000
оооооо 5600 1500 4100
.
.
.
рррррр 3000 2000 1000

Заранеее блогадарен
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34978452
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34980121
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовал этот пример просто копирует содержимое 1.txt на 2.txt или что-то я не-то сделал, а как сделать чтобы удалить пробел строку до символа или цифра, после удаление пробел если встречает цифр то бросать это строку на 2.txt в противном случае продолжат поиск....
Заранеее блогадарен!!!!!
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34981089
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно и другие варианты, но определённо, надо выяснить, по какому условию оставлять записи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Private Sub Command1_Click()
    On Error GoTo err1
    Dim myCol As New Collection
    Dim Buf As String, slovo
    Dim i As Long, copy_ As Byte
    
    Dim file1 As String:    file1 = "C:\VB6\Delete_String\1.txt"
    Dim file2 As String:    file2 = "C:\VB6\Delete_String\2.txt"
    
    Open file1 For Input As # 1 
    Do While Not EOF( 1 )
        copy_ =  0 
        Line Input # 1 , Buf
        slovo = Split(Buf, " ")         'разбить строку по словам через пробел
        For i =  1  To UBound(slovo)
            If Val(slovo(i)) >  0  Then   'если три слова подряд, начиная со второго, цифры
                copy_ = copy_ +  1 
            End If
        Next
        If copy_ =  3  Then               'то оставлю эту строку
            myCol.Add Buf
        End If
    Loop
    Close # 1 
    
    Open file2 For Output As # 1 
            
    For i =  1  To myCol.Count
        Print # 1 , myCol(i)
    Next i
    
    Close # 1 
    
'    Kill file1          'удалить
'    Name file2 As file1 'переименовать

    Exit Sub
err1:
    MsgBox Err.Description
End Sub
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34981239
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Строка начинается с буквами и цифрами:
Dsdsdsdsdsdsd
Sdsdsdsdsdsdsd
100 500 600 200
200 600 300 250
100 0 0 25
Sdfsdfsdfsdfsdfsdf
Sdfsdfsdfsdfsdfsdf
100 500 600 200
200 600 300 250
удалить пробел и проверить, если строка начинается с буквам, символам или пустой они ненужно, только взять те строка которые начинается с цифрами
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34981390
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    Dim file2 As String:    file2 = "C:\VB6\Delete_String\2.txt"
    
    Dim kod As Integer
    Open file1 For Input As # 1 
    Do While Not EOF( 1 )
        Line Input # 1 , Buf
        If Len(Buf) >  0  Then
            kod = Asc(Mid(Buf,  1 ,  1 ))
            If kod >=  48  And kod <=  57  Then 'если код, первого символа, цифра
                myCol.Add Buf
            End If
        End If
    Loop
    Close # 1 
    
    Open file2 For Output As # 1 
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34981438
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю почему у меня нечего не получается, отправляю файл, если у вас есть время посмотрите пожалуйста........
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34981443
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34981454
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извиняюсь не этот файл, заново отправляю
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34981464
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34981650
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так заработало
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    Dim kod As Integer
    Open file1 For Input As # 1 
    Do While Not EOF( 1 )
        Line Input # 1 , Buf
        slovo = Split(LTrim("" & Buf), " ") 'разбить строку по словам через пробел
        If UBound(slovo) >  0  Then
            kod = Asc(Mid(slovo( 0 ),  1 ,  1 ))
            If kod >=  48  And kod <=  57  Then 'если код, первого символа, цифра
                myCol.Add Buf
            End If
        End If
    Loop
    Close # 1 
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34981849
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой спасибо klen_, я в этой теме немножко туповат, если можно еще пару вопросика, каждый строка содержит несколько пробелов и опостров, например:
___10101____________5'107'171.53______________0.00___________9'727'386.88________8'309'649.26
где _ означает пробела, задача: удалить все пробели и опостров и разделителям колонок должен быт таб или ; . например:
10101;5107171.53;0.00;9'727386.88;8309649.26
Заранее спасибо за поддержку!!!!
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34981968
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так попробуй
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    Dim kod As Integer
    Dim stroka As String
    Open file1 For Input As # 1 
    Do While Not EOF( 1 )
        Line Input # 1 , Buf
        Buf = Replace(Buf, "'", "")         'удалить апостроф
        slovo = Split(LTrim("" & Buf), " ") 'разбить строку по словам через пробел
        If UBound(slovo) >  0  Then
            kod = Asc(Mid(slovo( 0 ),  1 ,  1 ))
            If kod >=  48  And kod <=  57  Then 'если код, первого символа, цифра
                stroka = ""
                For i =  0  To UBound(slovo)
                    If slovo(i) <> "" Then  'собрать строку, без пробелов
                        stroka = stroka & slovo(i) & ";"
                    End If
                Next
                myCol.Add stroka
            End If
        End If
    Loop
    Close # 1 
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34982174
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер!!!, отлично работает.., подледный вопрос, файл который я загружаю они каждый минут поступает с разными именами, а как обработать все эти файлы., например:
Входящие -->(20112007685.txt, 01112007682.txt, 14102007542.txt, 30112007183.txt и т.п. ) и в конце каждый строка добавит последние 3 цифра имя файла.
Обработанные -->(20112007.txt, 01112007.txt, 14102007.txt, 30112007.txt и т.п. )
Из конца имя файла убрать 3 цифра…
Заранее спасибо за поддержку!!!
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34982484
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обрати внимание, в новый файл, записи будут добавляться
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Command1_Click()
    Dim papka As String:    papka = "C:\VB6\Delete_String\"
    Dim file1 As String:    file1 = ""
    Dim file2 As String:    file2 = ""

    file1 = Dir(papka & "*.txt")
    Do While file1 <> ""
        file2 = Mid(file1,  1 ,  8 ) & ".txt"
        Delete_String papka & file1, papka & file2
        file1 = Dir
    Loop
End Sub
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Private Sub Delete_String(ByVal file1 As String, ByVal file2 As String)
    On Error GoTo err1
    Dim myCol As New Collection
    Dim Buf As String, slovo
    Dim i As Long, copy_ As Byte
    
    Dim kod As Integer
    Dim stroka As String
    
    Open file1 For Input As # 1 
    Do While Not EOF( 1 )
        Line Input # 1 , Buf
        Buf = Replace(Buf, "'", "")         'удалить апостроф
        slovo = Split(LTrim("" & Buf), " ") 'разбить строку по словам через пробел
        If UBound(slovo) >  0  Then
            kod = Asc(Mid(slovo( 0 ),  1 ,  1 ))
            If kod >=  48  And kod <=  57  Then 'если код, первого символа, цифра
                stroka = ""
                For i =  0  To UBound(slovo)
                    If slovo(i) <> "" Then  'собрать строку, без пробелов
                        stroka = stroka & slovo(i) & ";"
                    End If
                Next
                myCol.Add stroka
            End If
        End If
    Loop
    Close # 1 
    
    Open file2 For Append As # 1 
            
    For i =  1  To myCol.Count
        Print # 1 , myCol(i)
    Next i
    
    Close # 1 
    
'    Kill file1          'удалить
'    Name file2 As file1 'переименовать

    Exit Sub
err1:
    MsgBox Err.Description
End Sub
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34982575
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в конце строка не добавляется 3 подледный цифры имя файла, и обработанный файлы должен находиться в другом каталоге
Заранее спасибо за поддержку!!!!
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34983777
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все спасибо уже разобрался, а как сделать, чтобы после обработка файлов (т.е. приходные файлы) бросать их на другой каталог.....
Заранее спасибо за поддержку!!!!
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34983780
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. очистить каталог
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34984204
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sh_assaбросать их на другой каталог.....предлагаю сразу писать в другой каталог
Код: plaintext
       Delete_String papka & file1, В_ДРУГОЙ_КАТАЛОГ_\ & file2

или так
Код: plaintext
1.
Delete_String papka & file1, papka & file2
Name papka & file1 As Другая_папка\ & file2
но команда Name .. As ..
не переносит файлы в глубь по дереву каталога
а так же, если надо перенести на другой диск
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34984245
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sh_assaбросать их на другой каталог.....предлагаю сразу писать в другой каталог
Код: plaintext
       Delete_String papka & file1, В_ДРУГОЙ_КАТАЛОГ_\ & file2

или так
Код: plaintext
1.
Delete_String papka & file1, papka & file2
Name papka & file1 As Другая_папка\ & file2
но надо учесть, что команда Name .. As .. не может перемещать файлы вниз (глубже) по дереву каталога
а так же на другой диск
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34984559
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это я уже я сделал, получилось, хочу старый файла (т.е file1) бросать куда небуд, чтобы в другой раз не обработать эты файлы, а обработать именно новый файл который приходить
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #34984607
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю Вас за поддержка klen_, все у меня отлично получилось.
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #35102418
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!!!
Есть файл в таком виде:
10200501;Суб.под. Иванов; 3600.00; 0.00; 0.00; 0.00;3600.00;
Сергей Федорович
10200502;Суб.под. Кассир-;0.00; 0.00; 0.00; 0.00; 0.00; 0.00;
ов Алексей
Владимрович
10200503;Суб.под. Андро-; 7200.00; 0.00; 0.00; 0.00;7200.00;
пов Михаил Санович
Как соединит строка в таком виде:
10200501;Суб.под. Иванов Сергей Федорович; 3600.00; 0.00; 0.00; 0.00;3600.00;
10200502;Суб.под. Кассиров Алексей Владимрович;0.00; 0.00; 0.00; 0.00; 0.00; 0.00;
10200503;Суб.под. Андро пов Михаил Санович; 7200.00; 0.00; 0.00; 0.00;7200.00;
Заранее блогадарен!!!
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #35103685
sh_assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно как не буд решить проблему, есть у кого не буд идея???
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Удалить строка текстового файла
    #36775242
Alexei Gennadevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Дабы не начинать новую тему, продолжу эту.

Есть текстовый файл, который импортируется в аксес. Проблема в том, что для импорта нужен весь файл кроме первой строки, который содержит название файла. Есть идеи, как это провернуть?

В настоящее время делаю следующим образом:
1. Открываю файл с данными;
2. Создаю временный файл;
3. Циклом построчно считываю данные из первого файла и, если номер строки > 1, то записываю ее во второй файл;
4. Когда все переписано во второй файл, то импортирую его в аксес и затем удаляю.
Все работает, но строк в документе более 50 000. Поэтому это занимает прилично времени. Есть ли какая-нибудь более простая процедура?
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #36775255
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexei Gennadevich,

А почему нельзя после импорта в аксесс просто удалить первую строку?
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #36775315
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexei Gennadevich,

если текстовый файл с разделителями или для него есть спецификация импорта, то можно сделать одним запросом. Без построчного считывания.
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #36775324
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_worldесли текстовый файл с разделителями или для него есть спецификация импорта, то можно сделать одним запросом. Без построчного считывания.
Так я так понимаю, что он и делает одним запросом. Иначе он бы мог первую строку просто пропустить и не мучиться.
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #36775383
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ориентировался на это
Alexei GennadevichВ настоящее время делаю следующим образом:
1. Открываю файл с данными;
2. Создаю временный файл;
3. Циклом построчно считываю данные из первого файла и, если номер строки > 1, то записываю ее во второй файл;
4. Когда все переписано во второй файл, то импортирую его в аксес и затем удаляю.
Все работает, но строк в документе более 50 000. Поэтому это занимает прилично времени. Есть ли какая-нибудь более простая процедура?
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #36776291
Alexei Gennadevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так что?
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #36776321
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexei GennadevichНу так что?
Эм. А где ответ на вопрос?
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #36776766
Alexei Gennadevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexei GennadevichНу так что?
Сорри. Не обращайте внимания!

Shocker.ProAlexei Gennadevich,

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

mds_worldAlexei Gennadevich,

если текстовый файл с разделителями или для него есть спецификация импорта, то можно сделать одним запросом. Без построчного считывания.
mds_world,
А можно поподробнее, пожалуйста?
В качестве разделитель столбцов используется tab, да и спецификация есть.
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #36776781
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexei Gennadevichимпортирую его в аксес
Надо было бы тогда указать, каким способом импортируете, потому что это можно сделать миллионом различных способов.

Мне кажется, надо попросить модератора перенести топик в Аксесс - там быстрее ответят.
...
Рейтинг: 0 / 0
Удалить строка текстового файла
    #36776786
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМне кажется, надо попросить модератора перенести топик в Аксесс - там быстрее ответят.
А, нет, блин, вы ж в чужом топике пишете.
Задайте вопрос в Аксессе - у вас через пять минут ответ будет.
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Удалить строка текстового файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]