|
v7: Удаление строки из текстового файла | ☑ | ||
---|---|---|---|---|
0
Штурман
10.02.14
✎
11:59
|
К примеру, есть текстовый файл со следующим содержимым:
Иванов Иван Иванович Петров Петр Петрович Сидоров Сидр Сидорович Нужно в этом файле найти слово "Петр" и удалить строку с этим словом, т.е. "Петров Петр Петрович" стереть. Как примерно это реализуется в семерке, кто подскажет? |
|||
1
Godofsin
10.02.14
✎
12:03
|
ну я думаю так: загружается из файла, удаляется, загружается обратно в файл
|
|||
2
Штурман
10.02.14
✎
12:04
|
(1) куда загружается, в массив ?
|
|||
3
Godofsin
10.02.14
✎
12:04
|
(2) Как вариант
|
|||
4
AlexYurg
10.02.14
✎
12:05
|
Есть объект "Текст".
Дальше СП расскажет. |
|||
5
Злопчинский
10.02.14
✎
12:07
|
накуа в массив грузить..?
прочитали строку из файла1, в строке поискали, нашли - пропустили и пошли на чтение след.строки; не нашли - вывели в файл2. По окончании файл1 удалили, файл2 переименовали на файл1 (главное чтобы с правами все ок было)...? |
|||
6
serg-lom89
10.02.14
✎
12:08
|
УдалитьСтроку() вроде есть
|
|||
7
DrZombi
гуру
10.02.14
✎
12:12
|
(6) Ты хоть понимаешь, как работает Объект "Текст"?
И что он делает с файлом? :) ... И что будет, если файл весит 600 метров, или 2 Гб, и более :) |
|||
8
DrZombi
гуру
10.02.14
✎
12:14
|
(0) Зечем тебе удалить себя из лога?
В общем, лучше поведай нам, что за текстовый файл, каковы его назначение? Как он заполняется, по какому правилу? Каков максимальный размер файла? (если он весит до 1 метра, то используй Объект "Текст" и его методы) :) |
|||
9
DrZombi
гуру
10.02.14
✎
12:15
|
+(0)Как вариант, можно не удалять, а попросту заполнить Эту фамилию пробелами :)
Заполняя соответственно все другие системные "Символы", что бы в итоге получилась Мего большая строка (пустая) :) |
|||
10
Штурман
10.02.14
✎
12:30
|
(8) Какой лог, это всего лишь простой пример :)
А размер файла около 30 мегабайт. |
|||
11
Ёпрст
10.02.14
✎
12:33
|
через fso чтение первого, запись во второй..
|
|||
12
Ёпрст
10.02.14
✎
12:33
|
усё.
|
|||
13
Штурман
10.02.14
✎
12:37
|
(11) а что такое fso ?
|
|||
14
Wobland
10.02.14
✎
12:38
|
(13) Fabryka Samochod?w Osobowych S.A. — польская компания, производящая легковые автомобили.
|
|||
15
Ёпрст
10.02.14
✎
12:40
|
||||
16
Ёпрст
10.02.14
✎
12:41
|
ну и до кучи
http://kb.mista.ru/article.php?id=484 |
|||
17
Штурман
10.02.14
✎
12:47
|
(15) что-то там про удаление строки ни строчки, как и про нахождение слова
|
|||
18
Ёпрст
10.02.14
✎
12:49
|
(17) п...ц
Пока file.AtEndOfStream=0 Цикл стр=file.ReadLine(); Если Найти (стр,"ПолныйПЭ") =0 Тогда file2.WriteLine(стр); КонецЕсли; КонецЦикла; |
|||
19
eRik
10.02.14
✎
12:51
|
а штатный v7plus с его V7TextFile уже не в моде?
|
|||
20
trad
10.02.14
✎
13:07
|
(18)при помощи BinaryData из 1с++ можно на одном файле выкрутится
|
|||
21
Штурман
10.02.14
✎
13:07
|
(18)
fso = СоздатьОбъект("Scripting.FileSystemObject"); file = fso.OpenTextFile(ИмяФайла, 1, 0, 0); //Открываем файл в режиме "только чтение" тз = СоздатьОбъект("ТаблицаЗначений"); тз.НоваяКолонка("НомерСтроки"); Пока file.AtEndOfStream=0 Цикл стр = file.ReadLine(); Если Найти(стр, "Петр") = 0 Тогда тз.НоваяСтрока(); тз.НомерСтроки = стр; Сообщить(стр); //file2.WriteLine(стр); КонецЕсли; КонецЦикла; file.Close(); сообщает две последние строки, что не так? |
|||
22
trad
10.02.14
✎
13:09
|
(20) *выкрутиться
|
|||
23
Штурман
10.02.14
✎
13:09
|
(21) вообще все строки выводтся после находжения Петра...
|
|||
24
Ёпрст
10.02.14
✎
13:11
|
>>>тз.НомерСтроки = стр; //'nj gbpltw
|
|||
25
Ёпрст
10.02.14
✎
13:12
|
(21) Это означает, что во всех отстальных строках есть слово Пётр
|
|||
26
Штурман
10.02.14
✎
13:13
|
(25) в остальных строках нет никакого петра
|
|||
27
Ёпрст
10.02.14
✎
13:13
|
Если надо удалить Петр, а не Петрова, то так
Если Найти(стр, " Петр ") = 0 Тогда |
|||
28
Ёпрст
10.02.14
✎
13:14
|
(26) :))))))))))))))))))))))))))))))))))))))))))))))
|
|||
29
Штурман
10.02.14
✎
13:16
|
(28) УдалитьСтроку() - так чтоль?
а номер ее откуда брать? |
|||
30
Ёпрст
10.02.14
✎
13:17
|
(29) Наркоман шо ле ?
|
|||
31
Штурман
10.02.14
✎
13:17
|
(30) не семерошник :)
|
|||
32
Ёпрст
10.02.14
✎
13:18
|
Какой в ж..у номер строки ?
Читай (11) Читаешь первый файл, если строка подходит по условию - пихаешь её во второй (новый файл). Усё. |
|||
33
Штурман
10.02.14
✎
13:20
|
(32) не, мне новый файл не нужен, да и зачем найденную строку в другой файл пихать, есть мне ее удать из первого файла нужно
|
|||
34
Ёпрст
10.02.14
✎
13:22
|
(33) удачи. Я тебе предложил один из самых быстрых способов.
|
|||
35
Ёпрст
10.02.14
✎
13:23
|
скопировать новый файл со старым именем с перезаписью оного.. тоже доли секунды
|
|||
36
Штурман
10.02.14
✎
13:31
|
(35) Т.е. получается так:
создаем новый файл, в который записываем строки, старый файл удаляем, а новый переиновываем в название старого... |
|||
37
Ёпрст
10.02.14
✎
13:36
|
(36) не надо ничего удалять, нужно просто новый файл записать со старым именем с флагом перезаписи.. и усё.
|
|||
38
Штурман
10.02.14
✎
14:15
|
(37) Спасибо, в конце сделал так:
fso.CopyFile(ИмяФайла2, ИмяФайла, 1); fso.DeleteFile(ИмяФайла2, 1); |
|||
39
Ёпрст
10.02.14
✎
14:23
|
мог бы и проще.. MoveFile
|
|||
40
Штурман
10.02.14
✎
14:24
|
(39) учту :)
|
|||
41
Злопчинский
10.02.14
✎
15:28
|
не прошло и получаса как пришли к решению, озвученному еще (5). моего слова мало было, надо чтобы Епрст пинок дал... ;-)
|
|||
42
acanta
10.02.14
✎
15:35
|
честные студенты сначала подумают сами, а потом сверят свои ответы..
|
|||
43
Torquader
10.02.14
✎
15:41
|
Кстати, а мы слово Петр ищем или сочетание букв ?
Например, Найти("Пертов","Петр") скажет, что нашла, а на самом деле его там нет. |
|||
44
an-korot
10.02.14
✎
16:43
|
вот вы человеку мозг трахаете... 43 поста о такой фигне %(
|
|||
45
Torquader
10.02.14
✎
16:50
|
(44) У человека полоска опыта такая, что он всё и сам может, но, видимо, скучно одному код писать для всякой фигни.
|
|||
46
Torquader
10.02.14
✎
16:51
|
Я, например, хотел вчера спросить у форума, что лучше - передавать в функцию десять параметров или одну структуру.
Потом, решил сам проверить - оказалось, что ответ ожидаем. |
|||
47
Ёпрст
10.02.14
✎
16:53
|
(46) "в мешок и об угол" ?
|
|||
48
Torquader
10.02.14
✎
16:59
|
(47) Просто, когда хочешь получить грамотный ответ, нужно полностью описать задачу и способы её решения, а, когда ты это сделал, то понимаешь, что задача уже решена и спрашивать о ней не за чем.
А, пока задача не решена - можно только "съезд телепатов" созывать, чтобы они постановку додумали. |
|||
49
an-korot
10.02.14
✎
17:01
|
(48) :-D
съезд телепатов - сказал как бог )))) |
|||
50
DrZombi
гуру
11.02.14
✎
10:40
|
(46) Структуру, вестимо.
Но оно удобно только если параметров больше 10-ти :) |
|||
51
DrZombi
гуру
11.02.14
✎
10:41
|
(48) Вот оно как, вы за то, что бы мы тут телепатию развивали.
И пыталсь "Отгадать Мелодию по первым нотам"? :) |
|||
52
Torquader
11.02.14
✎
17:21
|
(50) Оказалось, что передавать структуру быстрее, но если параметры используются хотя бы на 50%, то передача всех параметров работает быстрее, так как доступ к структуре - самая медленная операция, в отличие от передачи параметров, часть работы за них выполнена ещё на этапе компиляции.
(51) Я как раз сказал, что реальное решение можно получить тогда, когда этот процесс не запускается. |
|||
53
Он
11.02.14
✎
21:12
|
(38) fso.CopyFile("1Cv7.tmp", "1Cv7.mlg", 1);
|
|||
54
Torquader
11.02.14
✎
21:36
|
(53) Эх, чему вы людей учите - не хорошо править историю, тем более так топорно.
|
|||
55
Он
11.02.14
✎
22:31
|
(54) Чел видимо накосячил. Теперь пытается избежать неотвратимого возмездия.
|
|||
56
Злопчинский
11.02.14
✎
22:32
|
При наличии бэкапов - ничто не является неотвратимым ;-)
|
|||
57
Torquader
11.02.14
✎
23:03
|
(56) И своевременного двойного логирования.
|
|||
58
Он
11.02.14
✎
23:17
|
Бэкапы - удел трусов.
|
|||
59
1Сергей
12.02.14
✎
08:51
|
(56) штатная выгрузка 1С логи не бекапит
|
|||
60
an-korot
12.02.14
✎
09:45
|
(59) а ктото еще пользуется штатной выгрузкой о.О
|
|||
61
1Сергей
12.02.14
✎
10:20
|
(60) есть такие :)
|
|||
62
Torquader
12.02.14
✎
16:06
|
(61) А как это "не бэкапит", если маску правильно вписать, то должна делать всё, что там указано.
Другое дело, что логи нужно копировать ещё до штатной выгрузки, так как в них кто-то может покопаться. |
|||
63
1Сергей
12.02.14
✎
21:16
|
(62) Может, мы про разные вещи говорим? Я говорю, что В конфигураторе "Администрирование - Выгрузить данные..." не включает в zip-архив файл 1cv7.mlg
Что Вы имеете в виду под штатной выгрузкой, мне не ведомо. |
|||
64
Torquader
12.02.14
✎
23:04
|
(63) Там чуть выше есть "Сохранить данные", где как раз журнал включить и можно.
Выгрузить - выгружает внутренности данных, а сохранить - просто сохраняет dbf-файлы. |
|||
65
Злопчинский
13.02.14
✎
02:25
|
бэкапить надо обязательно! вот у мну разборки сейчас нехилые идут. я тупо случайно удалил тестовые базы. бухские. тупо случайно промазал по клаве. базы - вне моей сферы ответсвенности. бэкапов - не было - базы то тестовые - а в них оказывается велась регулярная РАБОТА. Итого - я виновен в катастрофе. не те кто не озаботился ни тем что никого не уведомил что в тестовых базах идет работа, не те виновны кто не бэкапил рабочие данные - виновен я, выступивший в роли стихийного бедствия.. сегодня отмазу писал страницы на 4 - разрисовывал ипоказывал кто истинный виновник.. ;-) жду продолжения марлезонсокого балета... ;-)
|
|||
66
Злопчинский
13.02.14
✎
02:27
|
Инересно - много среди 1Сников народа - кто НИ РАЗУ ПО КРУПНОМУ не лажанулся? ;-) или все стыдливо умаличвать будут...?
. у мну были случаи когда я лажал по крупному в вещах, которыев моей сфере отвественности - но удавалось выкрутится малой кровью - либо бэкапы были, либо можно было "исправит" налажанное... |
|||
67
1dvd
13.02.14
✎
07:52
|
(66) Меня бог миловал. Однако, был один конфуз. В одном филиале база начала конкретно глючить - журналы показывали радугу, отчеты не работали. Решение требовали срочно. Я позвонил одмину и сказал, чтобы он всех выгонял из центральной базы и пересоздавал заново перефирийку. И только потом до меня дошло, что нужна была тупая переиндексация.
В результате парализовал работу центральной базы (около 30 пользователей) почти на час. Но, никакие данные потеряны не были |
|||
68
Mikeware
13.02.14
✎
07:58
|
(66) "не лажался тот, кто не лабал!"©
|
|||
69
1dvd
13.02.14
✎
08:25
|
(68) Думаю, на собеседовании можно задавать вопрос "Сколько баз Вы грохнули не сделав бэкапа".
Если скажет две и более - рассматривать кандидатуру с опаской. Если скажет одну - однозначно брать. Если скажет не одной - гнать поганой метлой и ссаными тряпками |
|||
70
Mikeware
13.02.14
✎
08:43
|
(69) ХЕЗ. Бэкапы были всегда. Проблема в основном в том, чтобы восстановить данные, не прервывая работы в основной базе...
|
|||
71
DrZombi
гуру
13.02.14
✎
09:09
|
(66) Бекапы... всегда бекапы :)
|
|||
72
Torquader
13.02.14
✎
18:40
|
Я, помнится, все лишние документы на компе собрал в папку "мусор", чтобы пользователи "разгребли", а она "умная" тётка, как только папку "мусор" увидела - сразу её удалила.
После этого я очень не люблю тёток. |
|||
73
Злопчинский
13.02.14
✎
22:10
|
(70) это да.. когда человек 30 - еще можно как-то операттивно скоординироваться, если больше - уже проблематично...
. а как можно подсунуть исправленный MD в папку с базой (файловая. в мд схема-структура данных не правилась, только формы/алгоритмы)..? |
|||
74
ДенисЧ
13.02.14
✎
22:19
|
(73) Тык анлокер же....
|
|||
75
Zhuravlik
13.02.14
✎
22:42
|
(73) "как можно подсунуть исправленный MD в папку с базой"
- Если turbomd используется, можно просто текстовички перекинуть... |
|||
76
Злопчинский
13.02.14
✎
22:50
|
(75) а можешь в скайп стукнуться на Zlopun?
|
|||
77
FlashC
13.02.14
✎
22:56
|
(0) в любом случае, более правильно как Ёпрст говорит, но и это не выход. а правильно - это - правила (сори за тф), которые нужно опубликовать/ограничить. При любой реализации загрузки из текста в виде "Петров Петр Петрович" - у тебя есть шанс нарваться на "пЁтр", и любые другие нюансы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |