//
Сообщение отредактировано: unic -
![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() ![]() |
![]() |
unic |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
//
Сообщение отредактировано: unic - -------------------- ![]() |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
никак не соображу каким образом можно записать в конец строки (текстового файла) . Задачка простая , считать-посчитать , но вот добавить в конец строки смутило. формат файла : <букофки> <букофки> <циферки> <сюда записать> Давай уточним. Ты имеешь текстовый файл, содержащий некоторое количество строк, и хочешь добавить фрагмент в конец некоторой строки (не обязательно последней)? Если так, то тебе придется перезаписать весь остаток файла, начиная с той строки, которую ты редактируешь. При этом возникнет проблема: если бы будешь писать в тот же файл, то ты будешь затирать то, что еще не прочитал. Поэтому ты либо прочти весь файл в какой-то буфер, либо (на практике лучше) пиши новый файл с другим названием (временный), а по окончании процесса сотри старый файл и переименуй новый. Например, тебе надо в 10-ю строку дописать 'asdf'. Это можно сделать как-то так: fn:= 'myfile.txt';
assign(f,fn);
reset(f);
assign(t,'temp.txt');
rewrite(t);
i:= 0;
while not EoF(f) do begin
readln(f,s);
Inc(i);
if i=10 then s:= s+'asdf';
writeln(t,s)
end;
close(t);
close(f);
erase(f);
rename(t,fn);
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
unic |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
//
Сообщение отредактировано: unic - -------------------- ![]() |
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
выбрал другой путь - через массив типа string Можно и через массив (особенно, если массив динамический). Проблема только в том, что в общем случае файлы могут быть и больше имеющегося объема памяти.Цитата но когда файл прочитывается до конца , вылетает ошибка Я не настолько хорошо (а точнее, совсем не) знаком с PascalABC, чтоб указывать на ошибку.. Но в нормальных компиляторах все же требуется сначала выделить память под массив (SetLength), а потом уже им пользоваться. Если этого не сделать, то произойдет выход за границы массива и порча памяти, которая может привести к любым ошибкам - в частности, как то, что ты получаешь.собстно почему она возникает ? Вроде условия прописаны .. Но я не очень удивлюсь, если в PascalABC введена возможность автоматической аллокации, как в PHP типа. Уж уродовать язык, так уродовать до конца.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата собстно почему она возникает ? Потому что until c='#13'; и until c=#13; - это очень разные вещи... Ну, и не забывай, конечно, память под T выделять, а то ошибка будет другая... |
unic |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
Всем огромное спасибо , нашел проблемы .
1) используя функцию setlength , я брал переменную i:=2 , тк отсчет в массивах начинается с 0 , получался массив размером 1 , эту же переменную использовал и при записи данных t[i] , те записывал во вторую ячейку , которой не существовало . 2) Избавился от while not eof(f) , оставив только repeat until eof(f); и еще раз спасибо что нашли время для ответов на мои глупые вопросы . Рабочая версия :
uses crt;
var t:array of string;
n:array of integer;
f:text;
i,h,a,b,z:integer;
s:string;
m:char;
begin
// Заносим строки в массив //
i:=2;
assign(f,'data.txt');
reset(f);
repeat
setlength(t,i);
readln(f,t[i-1]);
inc(i);
until eof(f);
setlength(n,i);
// Собираем среднее арифметическое
reset(f);
i:=i-2;
for h:=1 to i do
begin
repeat
read(f,m);
until m=' ';
repeat
read(f,m);
until m=' ';
readln(f,a,b,z);
n[h]:=round((a+b+z)/3);
end;
close(f);
//Начинаем записывать в файл
rewrite(f);
for h:=1 to i do begin
str(n[h],s);
writeln(f,t[h],' Средний балл :',' ',s);
end;
close(f);
writeln('Программа успешно выполнена');
readkey;
end.
Текстовый файл: Цитата Вася Васильев 33 55 22 Иван иванов 67 22 88 Петр Петров 11 13 66 Сообщение отредактировано: unic - -------------------- ![]() |
Вячеслав Л. |
![]()
Сообщение
#7
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 227 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Надо ужимать время редактирования. Сколько можно читать ответы, не зная вопросов?
-------------------- Само знание есть сила
|
Lapp |
![]()
Сообщение
#8
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Надо ужимать время редактирования. Сколько можно читать ответы, не зная вопросов? Уже ужато до полутора суток (если я правильно помню). Можно и больше ужать, но полицейские методы не всегда самые эффективные. Именно по этой причине я в последнее время стараюсь включать полную цитату в ответ (в этой теме она тоже есть). Совет: если тебе не нравятся действия пользователя - у тебя всегда есть право понизить ему репутацию. Не надо перекладывать это на админов. И не надо говорить, что это неэффективно. Это не менее эффективно, чем твой голос при выборе президента ![]() Просьба: красить сообщения, не относящиеся к собственно теме, в серый цвет. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Вячеслав Л. |
![]()
Сообщение
#9
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 227 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Цитата если тебе не нравятся действия пользователя - у тебя всегда есть право понизить ему репутацию Хорошо. Я только боюсь, что unic все равно своего добился: содержимое его сообщений никто не увидит. А то, что он имеет репутацию 0, -1 или -10, ему наплевать на это, так что, боюсь, без "полицейских" мер все равно не обойтись.Цитата Это не менее эффективно, чем твой голос при выборе президента Такового не имею ![]() -------------------- Само знание есть сила
|
Unconnected |
![]()
Сообщение
#10
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Можно отвечать только через сутки каждый раз) Вообще, не пойму, что за вредительство - боится, что одногруппники эту тему нагуглят? Даже если и так, то пусть лучше нагуглят, чем такое западло делать тем, кто ему помог
![]() -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
unic |
![]()
Сообщение
#11
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
Удалил лишь по тому что считал свой вопрос уж больно глупым для данного форума . Да и в принципе задание я выполнил , код отписал здесь +текст файла+задание в заголовке, 2 раза поблагодарил людей которые выручили , собстно что еще требуется от меня ? Да и в чем вопрос , у вас IPB стоит , по-моему в два клика можно восстановить сообщение (покрайней мере в VB была такая функция) . А вот оскорблять - это вы уже граждане сами некрасиво поступаете
Сообщение отредактировано: unic - -------------------- ![]() |
Вячеслав Л. |
![]()
Сообщение
#12
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 227 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Цитата Удалил лишь по тому что считал свой вопрос уж больно глупым для данного форума Подумай, что произойдет с форумом, если каждый, кто посчитает свой вопрос глупым, удалит его?Цитата Да и в принципе задание я выполнил , код отписал здесь +текст файла+задание в заголовке, 2 раза поблагодарил людей которые выручили , собстно что еще требуется от меня ? Сдал сам, подумай о других. У кого-то будет такой же вопрос и человек сможет найти его через поисковик или через поиск по форуму. Возможно такое? Ты лишаешь людей этой возможности.Цитата Да и в чем вопрос , у вас IPB стоит , по-моему в два клика можно восстановить сообщение (покрайней мере в VB была такая функция) Зачем лишний раз дергать администратора, если можно просто оставить как было?Цитата А вот оскорблять - это вы уже граждане сами некрасиво поступаете +1 Unconnected, ты не прав.Может, отделить последние сообщения? -------------------- Само знание есть сила
|
Unconnected |
![]()
Сообщение
#13
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата Удалил лишь по тому что считал свой вопрос уж больно глупым для данного форума . Я считаю, это вранье. Ничего правдоподобнее придумать не мог? После разговора в теме ему вдруг внезапно показалось, что для ДАННОГО форума вопрос слишком глуп! Не захотел портить ветку глупыми вопросами, и всё стер.. не, надо было перенести на более "глупый" форум. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
unic |
![]()
Сообщение
#14
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
я здесь регистрировался только чтобы задать вопрос , мне как то с высокой колокольни на репутацию и на ваши слова , которые я сейчас расцениваю , как попытку устроить холивар на пустом месте . разговор закончен , нарушил правила форума - бан , в противном случае понижение репутации . Так зачем же организовывать бессмысленную болтовню , если мне и так понятно что на данном форуме не приветствуется удаление своих же постов ?! Не понимаю..
Сообщение отредактировано: unic - -------------------- ![]() |
Вячеслав Л. |
![]()
Сообщение
#15
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 227 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Цитата Так зачем же организовывать бессмысленную болтовню , если мне и так понятно что на данном форуме не приветствуется удаление своих же постов ?! К чему тогда был этот пост? Нельзя было просто извиниться? Надо было придумать причину: ... Удалил лишь по тому что считал свой вопрос уж больно глупым для данного форума ...?Цитата как попытку устроить холивар на пустом месте Ну, нам заняться нечем ![]() Цитата нарушил правила форума - бан Бан - крайняя мера, полностью согласен с администрацией. Если банить за каждое нарушение...-------------------- Само знание есть сила
|
![]() ![]() |
![]() |
Текстовая версия | 10.04.2025 6:24 |