Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

работа с файлом в Bp7

15K
29 марта 2006 года
adrom
12 / / 29.03.2006
Люди HELP ME PLEASE!
Нужно написать програмку, которая бы в файл с рашринием *.dat (например book.dat), который уже существует, могла добовлять стоки данных, которые вводит пользователь с клавиатуры (например название, автора и год).

Заранее благодарен за любую помощь!
2.2K
29 марта 2006 года
fogg
114 / / 21.02.2006
Цитата:
Originally posted by adrom
Люди HELP ME PLEASE!
Нужно написать програмку, которая бы в файл с рашринием *.dat (например book.dat), который уже существует, могла добовлять стоки данных, которые вводит пользователь с клавиатуры (например название, автора и год).

Заранее благодарен за любую помощь!




Код:
uses crt;
var f:text;
    s:string;
begin
 writeln('Введите данные для записи в файл');
 readln(s);
 assign(f,'c:\book.dat')
 append(f);
 writeln(f,s);
 close(f);
end.
15K
31 марта 2006 года
adrom
12 / / 29.03.2006
Большое спасибо!
А можно в этом файле отсортироваить строки по именам?
247
31 марта 2006 года
wanja
1.2K / / 03.02.2003
Цитата:
Originally posted by adrom
Большое спасибо!
А можно в этом файле отсортироваить строки по именам?


Ну, в принципе да, например, скачать все это в память(если влезет) и там отсортировать.:D

286
31 марта 2006 года
misha_turist
572 / / 28.11.2005
Цитата:
Originally posted by fogg
Код:
uses crt;
var f:text;
    s:string;
begin
 writeln('Введите данные для записи в файл');
 readln(s);
 assign(f,'c:\book.dat')
 append(f);
 writeln(f,s);
 close(f);
end.



:???: :o Так у *.dat файлов кодировка же своя есть...... или я ошибаюсь????

1.8K
31 марта 2006 года
LastSoul
279 / / 28.12.2005
Если ты в Var написал f:text;
то файл хоть .exe пиши, всеравно он будет текстовый.

Так как тебе надо еще и сортировать, то лучше будет файл не текстовый, а типизированый сделать.

Вот че-то накалякал, но вроде работает:

Program Sorting;
Uses Crt;
Var f:File Of String;
s,s2,s3:String;
i,j:Integer;

Begin
//Добавление записей:
ClrScr;
Assign(f,'1');
ReWrite(f);
Repeat
Write('Введите данные: '); ReadLn(s);
If s<>'' Then Write(f,s);
Until s='';
Close(f);

//Сортировка:
Reset(f);
For i:=0 To FileSize(f)-1 Do
For j:=i+1 To FileSize(f)-1 Do
Begin
Seek(f,i); Read(f,s);
Seek(f,j); Read(f,s2);
If s>s2 Then
Begin
s3:=s2;
Seek(f,j); Write(f,s);
Seek(f,i); Write(f,s3);
End;
End;
Close(f);

//Очистка экрана и вывод данных из отсортированного файла
Reset(f);
ClrScr;
For i:=0 To FileSize(f)-1 Do
Begin
Read(f,s);
WriteLn(s);
End;
Close(f);
ReadLn;
End.
286
31 марта 2006 года
misha_turist
572 / / 28.11.2005
Цитата:
Originally posted by LastSoul
Если ты в Var написал f:text;
то файл хоть .exe пиши, всеравно он будет текстовый.

Так как тебе надо еще и сортировать, то лучше будет файл не текстовый, а типизированый сделать.

Вот че-то накалякал, но вроде работает:



Я знаю как с файлами работать. Просто сколько я *.dat смотрел, в виде текста его прочитать нелзя!!!!!

1.8K
01 апреля 2006 года
LastSoul
279 / / 28.12.2005
Цитата:
Originally posted by misha_turist
Я знаю как с файлами работать. Просто сколько я *.dat смотрел, в виде текста его прочитать нелзя!!!!!


Наверное я тебя неправильно понял, в ответе я имел ввиду что если файл с расширением dat изначально создать в Pascale как тестовый, то с ним можно работать как с текстовым.

2.2K
01 апреля 2006 года
fogg
114 / / 21.02.2006
Цитата:
Originally posted by LastSoul
Наверное я тебя неправильно понял, в ответе я имел ввиду что если файл с расширением dat изначально создать в Pascale как тестовый, то с ним можно работать как с текстовым.


если файлу присвоить тип - text - что бы вы не открывали это он будет рассматриватся как текстовый файл!!!!

1.8K
01 апреля 2006 года
LastSoul
279 / / 28.12.2005
Цитата:
Originally posted by fogg
если файлу присвоить тип - text - что бы вы не открывали это он будет рассматриватся как текстовый файл!!!!


Ну да, ты прав!
Я вообщето так и имел ввиду, просто маленько неправильно выразился P(

15K
04 апреля 2006 года
adrom
12 / / 29.03.2006
че-то не пашет как надо!
В файл записывает последнее выражение. Причем если ввести десять выражений, то последнее повториться 11 раз.
2.2K
04 апреля 2006 года
fogg
114 / / 21.02.2006
Цитата:
Originally posted by adrom
че-то не пашет как надо!
В файл записывает последнее выражение. Причем если ввести десять выражений, то последнее повториться 11 раз.


Ты чет намутил!
Давай выкладывай....

15K
05 апреля 2006 года
adrom
12 / / 29.03.2006
Цитата:
Originally posted by fogg
Ты чет намутил!
Давай выкладывай....


Дык я думал сначала, что я чет-то намутил не то.
Потом решил переписать код как он выложен, такая же фигня.
Чуть-чуть поменял код, он у меня стал выводить только последнюю введенную фразу (уже не 11 раз :!!!: )

Может я чето не догоняю?:-? :???:

1.8K
05 апреля 2006 года
LastSoul
279 / / 28.12.2005
Вот рабочий исходник...
Ввожу хоть одну хоть десять строк, последнее повторяется АДЫН РАЗ...
8.2K
05 апреля 2006 года
RusHak
86 / / 02.03.2006
Цитата:
Originally posted by adrom
че-то не пашет как надо!
В файл записывает последнее выражение. Причем если ввести десять выражений, то последнее повториться 11 раз.



Напиши в вышеприведённый пример следующий код
и всё будет прекрасно работать

Uses Crt;
label
labelka;
Var f:File Of String;
s,s2,s3:String;
i,j:Integer;

Begin
ClrScr;
Assign(f,'1');
ReWrite(f);
labelka:
Write('Ddtlbnt: '); ReadLn(s);
If s<>'' Then
begin
Write(f,s);
goto labelka;
end;
Close(f);

15K
06 апреля 2006 года
adrom
12 / / 29.03.2006
Цитата:
Originally posted by LastSoul
Вот рабочий исходник...
Ввожу хоть одну хоть десять строк, последнее повторяется АДЫН РАЗ...


Спасибо!
Решил сравнить с тем, что я написал. Оказалось в одном месте ошибку допустил :D вот оно и писало дофига раз последнее!

15K
06 апреля 2006 года
adrom
12 / / 29.03.2006
А можно это проделать с текстовым файлом, а то у меня чет не получается. :???:
1.8K
06 апреля 2006 года
LastSoul
279 / / 28.12.2005
можно и с текстовым, но сортировка будет посложнее, придется все данные из файла в какой-нибудь массив сохранять, потом их сортировать (в массиве), а потом из массива в файл...

Но и здесь есть минус, а если файл будет состоять, например из 2000 строк, такого массива не надыбаешь, придется че-нибудь другое мудрить

Кста, если необязательно использовать Pascal, то в Delphi можно отсортировать текстовый файл так:
ListBox1.Items.LoadFromFile(file);
ListBox1.Sorted:=True;
ListBox1.Items.SaveToFile(file);
15K
06 апреля 2006 года
adrom
12 / / 29.03.2006
Цитата:
Originally posted by LastSoul
можно и с текстовым, но сортировка будет посложнее, придется все данные из файла в какой-нибудь массив сохранять, потом их сортировать (в массиве), а потом из массива в файл...

Но и здесь есть минус, а если файл будет состоять, например из 2000 строк, такого массива не надыбаешь, придется че-нибудь другое мудрить

Кста, если необязательно использовать Pascal, то в Delphi можно отсортировать текстовый файл так:
ListBox1.Items.LoadFromFile(file);
ListBox1.Sorted:=True;
ListBox1.Items.SaveToFile(file);


Обязательно нужно использовать Pascal
И желательно все-таки с текстовым файлом.

1.8K
06 апреля 2006 года
LastSoul
279 / / 28.12.2005
Цитата:
Originally posted by adrom
Обязательно нужно использовать Pascal
И желательно все-таки с текстовым файлом.


Хотя моно и без всяких там массивов 8) ...
Значит делаем так:
var F:Text;
F2:File Of String;


1)Переделаем текстовый файл в типизированный, таким образом:
While Not Eof(f) Do
Begin
ReadLn(F,s);
Write(F2,s);
End;

2) Сортируем типизированный файл. А как, это я уже говорил выше...
ну и намбер 3) Делаем тоже самое что и в намбер 1, только наоборот:
For i:=0 To FileSize(F2)-1 Do
Begin
Read(F2,s);
WriteLn(F,s);
End;

естественно текстовый файл нужно ReWrite, перед тем как сохранять в него

15K
07 апреля 2006 года
adrom
12 / / 29.03.2006
Цитата:
Originally posted by LastSoul
Хотя моно и без всяких там массивов 8) ...
Значит делаем так:
var F:Text;
F2:File Of String;


1)Переделаем текстовый файл в типизированный, таким образом:
While Not Eof(f) Do
Begin
ReadLn(F,s);
Write(F2,s);
End;

2) Сортируем типизированный файл. А как, это я уже говорил выше...
ну и намбер 3) Делаем тоже самое что и в намбер 1, только наоборот:
For i:=0 To FileSize(F2)-1 Do
Begin
Read(F2,s);
WriteLn(F,s);
End;

естественно текстовый файл нужно ReWrite, перед тем как сохранять в него


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

1.8K
07 апреля 2006 года
LastSoul
279 / / 28.12.2005
Цитата:
Originally posted by adrom
Все заработало ничтяк, только сейчас появляется еще один файл? Может сортировку делать в буфере или проще удалить потом файл?


Лучше удалить: Erase(F2);

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог