Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2011, 11:01   #1
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
Вопрос Типизированный файл file of integer (добавить в конец файла копии положительных чисел) (Delphi)

я собрал программу в делфи в консоле,она работает(компилятор ошибок не выдает и файл a.txt меняет содержимое).но не так как хотелось бы.у кого какие идеи???

программа должна быть с типизированным файлом file of integer и должна добавлять в конец файла копии положительных чисел.
фаылы:a.txt-изначальный файл. asd.txt-создается навремя программы.
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type fint = file of integer;

procedure test4c(var f: fint);
var g: fint; i, x: integer;
begin
  reset(f); i := 0; x := 0;
  assign(g, 'asd.txt');
  rewrite(g);
  while not eof(f) do begin
    read(f, i);
    write(g, i);
  end; close(f);
  reset(f);
  while not eof(f) do begin read(f, x);
    if x > 0 then begin write(g, x); end;
  end;
  close(f); close(g);
  reset(g);
  rewrite(f);
  while not eof(g) do begin read(g, i); write(f, i);
  end; close(f); close(g); erase(g);
end;
var f: fint;
begin
  assign(f, 'a.txt');
  test4c(f);
end.
какие тока алгоритмы не собирал всегда выдает одно и тоже...может где то пропустил какую то мелочь?третий день бьюсь


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)

________
и название темы должно адекватно отражать суть решаемой задачи/проблемы!
темы с бессмысленными названиями нарушают правила форума и удаляются или закрываются!

Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 16.04.2011 в 11:46.
phasha вне форума Ответить с цитированием
Старый 16.04.2011, 11:45   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) судя по расширению файлов у Вас, мне кажется, что Вы не понимаете, что такое "типизированный файл"!
В чём проявляется "алгоритмы не собирал всегда выдает одно и тоже" ?! я в коде ошибок не увидел. Вроде бы всё чётко, просто и понятно!

2) вместо того, чтобы переписывать данные из временного файла в исходный - ГОРАЗДО проще (и быстре и эффективнее) просто переименовать исходный файл с расширением .BAK ( rename(f, 'temp.bak') )
переименовать файл g -> 'a.txt'
(если не нужна резервная копия - удалить 'temp.bak'
можно, конечно и просто удалить файл 'a.txt', а потом переименовать g -> 'a.txt', но сохранить временно исходный файл - более безопасно...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.04.2011, 11:54   #3
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
По умолчанию

да в смысле я примитивно сделал чтоб можно было ориентироваться))ну просто по полочкам.тока оно даже с условием выдает одно и то же или если есть русские символы в файле то и их в перемешку добавляет((вот не могу понять что тут не так((((((

-----
ну просто много вариантов перепробовал и всегда одно и то же(вот уже не знаю кому вопрос задать(голова пухнет



Не надо плодить подряд несколько коротких сообщений!
Это нарушение правил...
для того, чтобы через минуту/другую дописать сообщение,
не надо создавать ещё один новый пост.
нажимайте на предыдущем кнопку "Редактировать" ("Правка")
и дописывайте в своё сообщение, что Вы хотели добавить!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 16.04.2011 в 12:23.
phasha вне форума Ответить с цитированием
Старый 16.04.2011, 12:32   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
тока оно даже с условием выдает одно и то же или если есть русские символы в файле
извините, что за бред?!
Какие "РУССКИЕ" символы в файле?!

У вас ДВОИЧНЫЙ файл! Он состоит из байтовых величин, которые представляют собой ЦЕЛЫЕ числа?!
Ни о каких "символах" в данном случае даже речи быть не может!!

Вам привести пример типизированного файла file of Integer ?!

создавать (писать числа ) в этот файл можно ТОЛЬКО программно! например, так:
Код:
program Project2;
{$APPTYPE CONSOLE}

uses SysUtils;

type fint = file of integer;

var f : fint;
  i, n, k : integer;
begin
  WriteLn('Введите, сколько чисел записать в файл: ');
  Readln(N);
  AssignFile(f, 'a.ddt');
  Rewrite(f); {перезаписываем файл}
  for i:=1 to N do begin
    Write('Введите ',i,'-е число: ');
    Readln(k);
    Write(f, k);
  end;
  CloseFile(f); {закрываем файл}
end.

а если необходимо вывести содержимое файла, то делается это так:
Код:
program Project2;
{$APPTYPE CONSOLE}

uses SysUtils;

type fint = file of integer;

var f : fint;
  i, k : integer;
begin
  AssignFile(f, 'a.ddt');
  Reset(f); {открываем файл для чтения}
  while Not eof(f) do begin
    Read(f, k);
    WriteLn(k);
  end;
  CloseFile(f); {закрываем файл}
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.04.2011, 12:39   #5
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
По умолчанию

благодарю...
phasha вне форума Ответить с цитированием
Старый 16.04.2011, 13:03   #6
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
По умолчанию

можно еще один глупый вопрос? вот пусть f-файловая переменная,соответствующая типу file of integer.как написать процедуру дописывающую в конец файла копии положительных чисел, без записи в файл через программу,т.е. файл этот дан заранее и в нем обычный текст с различными буквами и цифрами? процедура должна выглядеть так <название процедуры>(<переменная>:<тип>);

Последний раз редактировалось phasha; 16.04.2011 в 13:06.
phasha вне форума Ответить с цитированием
Старый 16.04.2011, 17:26   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а можно уточнить?..

каким образом
"пусть f-файловая переменная,соответствующая типу file of integer"
"дописывающую в конец файла копии положительных чисел"
"файл этот дан заранее и в нем обычный текст с различными буквами и цифрами"

каким образом связаны файл f и файл с обычным текстом?

Дело в том, что, если у Вас "обычный текст с различными буквами и цифрами", то обрабатывать его можно ТОЛЬКО ИСКЛЮЧИТЕЛЬНО через переменную f : TextFile; (ну или : file of char - но это по сути и есть textfile). Всё. Точка.
Если у Вас есть файл типизированный - то его можно обрабатывать только через f : file of Integer. и никак не иначе.

Может быть, Вы удосужитесь, наконец, привести ПОЛНОЕ ДОСЛОВНОЕ описание задачи (а лучше всего скриншот из учебника). Ибо что-то странного Вы хотите получить...

кстати, попытаюсь пояснить на образном примере.
У меня есть коробочка с разноцветными карандашами.
И есть тетрадка с домашними заданиями. Как мне добавить в конец тетрадки все красные карандаши...

Аналогия ясна?...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.04.2011, 23:38   #8
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
По умолчанию

ну я не знаю что это исправит...вот дословное описание задачи(точка в точку)
-------------------------------------------------------------------------------------------------
пусть f-файловая переменная,соответствующая файлу типа File of integer. Написать процедуру Test4c(f), дописывающую в конец файла копии положительных чисел,сохраняя их исходный порядок.
----------------------------------------------------------------------------------------------
я кстати записывал в файл числа по вашему примеру и потом просматривал,после применил свою программу но ничего не изменилось в тексте когда вывел на экран. формат файла точно должен быть только .ddt? ну мой самый первый вариант работает просто может я не к тому файлу применяю или что то еще...подскажите конкретней пожалуйста.я в тупике уже.
----------------------------------------------------------------------------------------------------------
применял к этой программе даже файл где записаны только целые цифры и пару из них отрицательные.программа добавляет точно так же...все подряд

Последний раз редактировалось phasha; 16.04.2011 в 23:46.
phasha вне форума Ответить с цитированием
Старый 17.04.2011, 15:50   #9
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
По умолчанию

а все дошло спасибо!))больше пока в помощи не нуждаюсь)))все проверил прога работает правильно)
phasha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конец файла (delphi) CAMOBAP Помощь студентам 3 12.01.2011 09:31
Подсчитать разность положительных чисел (Delphi) De_Kurlzz Помощь студентам 2 20.06.2010 11:49
Ввести ФАЙЛ целых положительных чисел F1 looloo Помощь студентам 7 06.04.2010 10:08
Delphi - Типизированный файл honest Помощь студентам 3 10.06.2009 23:52
Типизированный файл в Delphi Dice Помощь студентам 1 15.12.2008 18:45