IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Обмен информацией в файлах.
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Собственно,начал подзабывать язык,решил возродить.
Есть задача.
Даны 2 текстовых файла с произвольной информацией внутри,произвести обмен информацией,что бы в первом была инфа второго,во втором- первого.Использовать ренейм нельзя.Собственно идея такая,завести 3 файл и через него, как буфер(аналогично обмену 2 переменных).Собсвенно интересует,есть ли вобможность незаводя 3 файла сделать такую операцию?
И еще Readblock и wrihteblock смогут отработать с sizeof(file)?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


У меня "семерка" 64 разрядная,так что запускаю я через Dos box, навыков работы с ним у меня мало(практически нет) все что могу это запустить ту программу,что мне нужна.В общем вместо хелпа он мне выдает кучу всяких иероглифоф в которых разобратсья невозможно,понятно,что надо менять кодировку,но где и как, я не знаю.Когда я пытался запускать ЛИСП он вообще отказывался подключать хелп и говорил,что его нету.

В общем исправил,нормально отработало с файлами на 1 КБ и 84 КБ.Но что то мне кажется,что если оба файла будут больше и их кратность будет больше чем 64кб,то тут возникнут проблемы.
Кстати время выполнения уже становится физически ощутимым.(возможно из-за эмулятора).

type
TArr= array [0..65528] of byte;
PArr = ^TArr;

function nod(x,y : longint):longint;
begin
if x<>0 then nod:=nod( y mod x, x) else nod:=y;
end;

var
f, g :file;
b,p : PArr;
posf, posg :longint;
ser: longint;

begin
assign(f, '01.txt'); reset(f,Sizeof(byte));
posf :=filesize(f);
assign(g, '02.txt'); reset(g,Sizeof(byte));
posg :=filesize(g);
ser:=nod(posf,posg);
GetMem(b,ser );
GetMem(p,ser);

while not eof(f) and not eof(g) do
begin
BlockRead(f,b^,ser);
seek(f,filepos(f)-Sizeof(byte)*ser);
BlockRead(g,p^,ser);
seek(g,filepos(g)-Sizeof(byte)*ser);
BlockWrite(f,p^,ser);
BlockWrite(g,b^,ser);
end;

if eof(f) then
while not eof(g) do
begin
BlockRead(g,b^,ser);
Blockwrite(f, b^,ser);
end;
if eof(g) then
while not eof(f) do
begin
BlockRead(f, b^,ser);
BlockWrite(g, b^,ser);
end;
seek(f,posg); truncate(f);
seek(g,posf); truncate(g);

FreeMem(b,ser);
FreeMem(p,ser);

close(f); close(g);
end.



Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Krjuger   Обмен информацией в файлах.   25.05.2011 1:09
IUnknown   Ну, текстовые-то они, если откроешь их как текстов…   25.05.2011 3:13
Krjuger   seek(f, posg); truncate(f); seek(g, posf); trunca…   25.05.2011 19:36
IUnknown   Да, если этого не сделать - то более короткий файл…   25.05.2011 20:07
Krjuger   Все теперь кажись окончательно понял,мы скидываем …   25.05.2011 20:22
IUnknown   Хорошо... Понятно, говоришь? :) Можно попросить те…   25.05.2011 20:27
TarasBer   Зачем НОД? Почему мы берём именно фиксированный ра…   25.05.2011 21:00
IUnknown   Потому что МНЕ так хочется. Такой ответ устроит? П…   25.05.2011 21:19
Krjuger   Ну чтож я попытался,но не все так прекрасно вышло)…   25.05.2011 22:05
IUnknown   Не делай так больше никогда. Ибо если размеры файл…   26.05.2011 4:03
TarasBer   > Память - не резиновая, у меня НЕТ свободных 6…   26.05.2011 13:18
Krjuger   А может лучше не надо дальше?))) Я конешно постар…   26.05.2011 16:34
TarasBer   Динамический буфер делается не так. Заводишь тип-у…   26.05.2011 17:13
Krjuger   То есть нечто подобное Buf : array of Char; F…   26.05.2011 18:23
TarasBer   Я думал, у тебя ТурбоПас. Если у тебя Дельфи, то д…   26.05.2011 18:33
IUnknown   лучше не превышать 65528: Restrictions: The larges…   26.05.2011 18:42
TarasBer   Хорошо, пусть будет 65528. Параметры типа ни на чт…   26.05.2011 18:49
Krjuger   У меня и то и то есть,но как сделать на турбо я в…   26.05.2011 19:43
TarasBer   Я же объяснил всё. type TBigArr = array [0 .. 6…   26.05.2011 19:47
Krjuger   Что я делаю не так. type TArr= array [0..65528] …   26.05.2011 21:32
IUnknown   Хм... Как бы, не надо читать данные туда, где нахо…   26.05.2011 22:01
Krjuger   Я пробовал мнооого вариантов в одном из них мой фа…   26.05.2011 23:15
Krjuger   Так,я совсем запутался.У меня есть b и p ,указател…   26.05.2011 23:45
IUnknown   Нет... Погоди, ты меня тоже запутал... Значит, та…   27.05.2011 0:05
Krjuger   У меня "семерка" 64 разрядная,так что за…   27.05.2011 0:50


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 9.06.2024 17:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name