Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

Редактирование файла   Найти похожие ветки 

 
Dub   (2005-11-21 01:55) [0]

Подскажите, можно ли редактировать файл (изменять лишь определённые строки, а остальные оставлять без изменения), если можно, то как?


 
Fay ©   (2005-11-21 02:13) [1]

2 Dub   (21.11.05 1:55)
>> Подскажите, можно ли редактировать файл
Можно, доказано Notepad-ом.

>> если можно, то как?
Какого размера файл, равны ли длины строк?


 
Германн ©   (2005-11-21 02:20) [2]

2 Dub   (21.11.05 01:55)  
Пойми сначала разницу между файлом и документом.


> Fay ©   (21.11.05 02:13) [1]
>
> 2 Dub   (21.11.05 1:55)
> >> Подскажите, можно ли редактировать файл
> Можно, доказано Notepad-ом.
Имхо, не доказано. Поскольку блокнот редактирует именно "документ", а не файл.


 
Fay ©   (2005-11-21 02:27) [3]

2 Германн ©   (21.11.05 2:20) [2]
>> Пойми сначала разницу между файлом и документом.
Зачем? Можно ли поподробнее с этого места?

>> Поскольку блокнот редактирует именно "документ", а не файл.
... и с этого


 
Dub   (2005-11-21 02:32) [4]

Наверное всё таки файл(например, prim.txt - по размером небольшой). Длины строк могут быть разными. На сегодняшний момент, приходиться для  изменения одной строки в файле файле создавать новый документ, туда все копировать с соответствующим изменением строки (строк), а затем пересоздавать исходный файл, туда всё копировать обратно, а временный файл удалять. Вот такая вот муд..нь !!! Кто знает как, то подскажите.
А что касается NotePad"а, то раскажите как!


 
Fay ©   (2005-11-21 02:35) [5]

2 Dub   (21.11.05 2:32) [4]
1) Читаешь весь файл
2) Правишь как угодно
3) Записываешь вместо исходного

и никаких временных файлов - я так и не понял, зачем они тут


 
Dub   (2005-11-21 02:42) [6]

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


 
Германн ©   (2005-11-21 02:44) [7]


> Fay ©   (21.11.05 02:27) [3]
>
> 2 Германн ©   (21.11.05 2:20) [2]
> >> Пойми сначала разницу между файлом и документом.
> Зачем? Можно ли поподробнее с этого места?
>
Можно. Начнём с того, что понятие "строка" существует в документе, но отсутствует в файле.

> >> Поскольку блокнот редактирует именно "документ", а не
> файл.
> ... и с этого

И тут пожалуйста. Блокнот загружает некий файл. В соответствии с неким алгоритмом представляет его в виде некоего документа. Редактирует именно сей документ, а не сам файл, а по команде "Записать" перезаписывает файл (в соответствии с тем алгоритмом, по которому он его читал ранее).
"И сколько раз твердили миру", что не стоит редактировать блокнотом файлы не являющимися "текстовыми | *.txt".


 
Dub   (2005-11-21 02:48) [8]

Штука в том, что требуется править не ручками, а программкой строки согласно некоторому критерию, а документ (насколько я понимаю) позволяет делать это только ручками. Уважаемый Герман, вот тут возникает следующий вопрос : причем здесь NotePad?


 
Fay ©   (2005-11-21 02:53) [9]

2 Dub   (21.11.05 2:42) [6]
Так.

2 Германн ©   (21.11.05 2:44) [7]
Я понял. Просто с самого начала не верил, что Вам придёт в голову объяснять такую ерунду. Только вот я не вижу (ни в каком виде) определения понятия "документа", т.о. можно было написать и "Пойми сначала разницу между файлом и друльбулеом".

>> И сколько раз твердили миру
Мне очевидно, что речи идёт именно о текстовом файле, т.к. упоминались строки.


 
Джо ©   (2005-11-21 02:53) [10]

2 Dub

var
 Lst: TStrings;
begin
 Lst := TStringList.Create;
 try
   Lst.LoadFromFile("d:\myfile.txt");
   //
   // правим построчно, как хотим
   //
   Lst.SaveToFile("d:\myfile.txt");
 finally
   Lst.Free
 end;
end;

И не нужно воротить непонятно что.


 
Fay ©   (2005-11-21 02:55) [11]

2 Джо ©   (21.11.05 2:53) [10]
>> var
>>  Lst: TStrings;

А почему не TStringList? Понимаю, что не смертельно, просто интересны мотивы.


 
Германн ©   (2005-11-21 02:58) [12]

2 Dub   (21.11.05 02:48) [8]
"Штука в том", что если файл не типизированный, то в общем случае нет иных способов, кроме как:
1. Считать весь файл куда-то.
2. Изменить что-то "согласно некоторому критерию".
3. Перезаписать в старый файл новое содержимое.


 
Джо ©   (2005-11-21 03:05) [13]


>  [11] Fay ©   (21.11.05 02:55)
> просто интересны мотивы.

Всегда стараюсь давать ту функциональность, которая требуется для конкретной задачи. Избыточная для конкретной задачи функциональность, как мне кажется - первый шаг к "развалу" кода. В данной задаче нужен "голый" список строк - мы его предоставляем. Нужна была бы сортировка и прочее - предоставили бы TStringList как он есть.


 
Германн ©   (2005-11-21 03:08) [14]


> Fay ©   (21.11.05 02:53) [9]
>
> 2 Dub   (21.11.05 2:42) [6]
> Так.
>
> 2 Германн ©   (21.11.05 2:44) [7]
> Я понял. Просто с самого начала не верил, что Вам придёт
> в голову объяснять такую ерунду. Только вот я не вижу (ни
> в каком виде) определения понятия "документа", т.о. можно
> было написать и "Пойми сначала разницу между файлом и друльбулеом".
>


А почему не верил? Ведь суть сабжа была именно такая, как ты понял! Максимально менееёмкое изменение именно файла!

А вот насчёт понятия "документ", я тут наверно не смогу тебе ответить. Имхо, мне лично претит это понятие. Ну не приемлет его моя душа. Наверно, если бы Роберт Шэкли дожил бы до сего момента, он бы описАл его литературно красиво, :)


 
Dub   (2005-11-21 03:09) [15]

Спасибо Всем !!!


 
Джо ©   (2005-11-21 03:15) [16]


>  [14] Германн ©   (21.11.05 03:08)
> Наверно, если бы Роберт Шэкли дожил
> бы до сего момента, он бы описАл его литературно красиво,

Сплюнь, ведь он еще жив.


 
Fay ©   (2005-11-21 03:15) [17]

2 Джо ©   (21.11.05 3:05) [13]
Не могу сказать, что понял что-либо 8). Особенно зная, что Lst := TStringList.Create;.
Но если бы мне достался такой код в наследство, я не стал бы его менять "за отсутствием состава преступления". 8)


 
Fay ©   (2005-11-21 03:16) [18]

2 Джо ©   (21.11.05 3:15) [16]
LOL


 
Германн ©   (2005-11-21 03:23) [19]

2 Джо ©   (21.11.05 03:15) [16]
Сплюнул три раза через левое плечо и постучал по дереву на всякий случай. Неужели я так махнулся? Склероз, блин. :(
Или может потому, что читал его послесловия про CP-M и MS-DOS, но не читал про Windows?


 
Джо ©   (2005-11-21 03:27) [20]

[19] Германн ©   (21.11.05 03:23)
> Или может потому, что читал его послесловия про CP-M и MS-DOS,
> но не читал про Windows?

Ух. А это что, не поделишься?
Кстати, насколько я знаю, он в очень плохом состоянии сейчас, после поездки в Киев на какую-то конференцию. Все, заканчиваю оффтопить.


 
Германн ©   (2005-11-21 04:16) [21]


> Джо ©   (21.11.05 03:27) [20]
>
> [19] Германн ©   (21.11.05 03:23)
> > Или может потому, что читал его послесловия про CP-M и
> MS-DOS,
> > но не читал про Windows?
>
> Ух. А это что, не поделишься?
> Кстати, насколько я знаю, он в очень плохом состоянии сейчас,
>  после поездки в Киев на какую-то конференцию. Все, заканчиваю
> оффтопить.


О блин, действительно склероз! Как же я забыл про поездку в Киев! :(

> Ух. А это что, не поделишься?
Поделюсь. Пардон всем, спутал Роберта Шэкли с Пирсом Энтони. У последнего в серии "Воплощения бессмертия" начиная с четвертой книги, в послесловии весьма красочно описана работа "ламера" с PC начиная с CP-M и кончая MS-DOS.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.123 c
2-1132517824
quadronik
2005-11-20 23:17
2005.12.11
Некорректная дата создания файла


2-1132475651
Goga
2005-11-20 11:34
2005.12.11
BASM


14-1132652595
SerJaNT
2005-11-22 12:43
2005.12.11
Client and Server


2-1132668007
romas_first
2005-11-22 17:00
2005.12.11
в CheckBox е изменить цвет иконки


8-1121002140
Дмитрий Белькевич
2005-07-10 17:29
2005.12.11
Быстрый сдвиг массива точек на дробное значение точек.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский