запись в текстовый файл

MapInfo, MapBasic
sysrepos
Активный участник
Сообщения: 128
Зарегистрирован: 07 окт 2012, 16:25
Репутация: 20
Откуда: Москва

запись в текстовый файл

Сообщение sysrepos »

можно ли в мапбэйсике изменить в текстовом файле определенную строку? (пятую например).

Сейчас, если нужно такое провернуть, то приходится копировать все строки в массив, изменять одну строку в полученном массиве и обратно полностью этот массив записывать в файл. Но сейчас стала задача изменить одну строку в большом файле. Есть ли способ для этой задачи в мапбэйсике более оптимальный, чем мой?
Последний раз редактировалось sysrepos 15 ноя 2013, 20:15, всего редактировалось 1 раз.
Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

Re: запись в текстовый файл

Сообщение ginpetr »

Когда передо мной стояла такая задача, я тоже ничего не нашел. Я кажется читал по строке из одного файла и записывал в другой.

[ Сообщение с мобильного устройства ]
trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: запись в текстовый файл

Сообщение trir »

Такое в принципе, с файлами, не возможно. Затем и придумали РБД
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: запись в текстовый файл

Сообщение Александр Мурый »

А вам нужно именно на чистом мапбэйсике это сделать? А то можно было бы в коде вызвать какую-нибудь консольную утилиту, которая бы заменила строку (чисто предположение).
Редактор материалов, модератор форума
sysrepos
Активный участник
Сообщения: 128
Зарегистрирован: 07 окт 2012, 16:25
Репутация: 20
Откуда: Москва

Re: запись в текстовый файл

Сообщение sysrepos »

ну вообще да, я пока только на мапбэйсике пишу.
а в других языках это возможно или нет?
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: запись в текстовый файл

Сообщение Александр Мурый »

Во всех популярных скриптовых языках (Python, Perl, PHP и т.п.), думаю, возможно. Или, как вариант, можно исп-ть спец. утилиты типа <sed> и <awk>.
Редактор материалов, модератор форума
sysrepos
Активный участник
Сообщения: 128
Зарегистрирован: 07 окт 2012, 16:25
Репутация: 20
Откуда: Москва

Re: запись в текстовый файл

Сообщение sysrepos »

а в C# так можно? я его сейчас в как раз изучаю
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: запись в текстовый файл

Сообщение Александр Мурый »

Редактор материалов, модератор форума
trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: запись в текстовый файл

Сообщение trir »

Всё равно - всё через память...
string str = File.ReadAllText("test.txt");
str = str.Replace("some text","some other text");
File.WriteAllText("test.txt", str);
thegeo
Активный участник
Сообщения: 161
Зарегистрирован: 17 янв 2012, 18:51
Репутация: 74

Re: запись в текстовый файл

Сообщение thegeo »

Такое возможно если все записи файла имеют одинаковую длину. Тогда можно открыть файл в режиме RANDOM и обращаться к конкретной записи по ее номеру.
Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

Re: запись в текстовый файл

Сообщение ginpetr »

у меня миф-файлы переписываются как я писал выше, при это происходит одно пересохранение и два удаления с экспортом и импортом между делом(меняю проекции таблиц) и так для нескольких таблиц... весь прцесс занимает секунды, ну десятки секунд, такое время можно и подождать. так стоит ли оптимизировать?

[ Сообщение с мобильного устройства ]
trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: запись в текстовый файл

Сообщение trir »

Если размер файл > нескольких сотен мегабайт - могут возникнуть сложности...
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: запись в текстовый файл

Сообщение Boris »

Если бы автор вопроса немного отошел назад и рассказал нам зачем ему из Mapinfo исправлять большой файл, на сколько я понимаю в этот момент Mapinfo больше ничего не делает, то и советы были бы немного конкретней. Например:
записать этот файл в MID с MIF = "NONE" и исправить любцю заранее выбранную строку средствами самой Mapinfo,
и т.п.
sysrepos
Активный участник
Сообщения: 128
Зарегистрирован: 07 окт 2012, 16:25
Репутация: 20
Откуда: Москва

Re: запись в текстовый файл

Сообщение sysrepos »

нужно в большом файле миф исправить одну строчку (название проекции)
Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: запись в текстовый файл

Сообщение dab »

sysrepos писал(а):нужно в большом файле миф исправить одну строчку (название проекции)
Проекция <=> План-схема?
Ответить

Вернуться в «MapInfo»

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

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