Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 224
от 26.12.2003, 13:20

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 392
Отправлено ответов: 1390
Активность: 354.5 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Strory
Статус: Начальный
Общий рейтинг: 141.66
[Подробней >>]
fC
Статус: Профессиональный
Общий рейтинг: 147.93
URL: Тезка :)
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 149.19
URL: Программирование на Паскале
[Подробней >>]
 
sir henry
Статус: Профессиональный
Общий рейтинг: 161.25
[Подробней >>]
Vitally
Статус: Доверительный
Общий рейтинг: 158.33
[Подробней >>]
Drahus
Статус: Опытный
Общий рейтинг: 167.25
[Подробней >>]
 
Case_X
Статус: Начальный
Общий рейтинг: 116.45
[Подробней >>]
Phenix
Статус: Опытный
Общий рейтинг: 115.06
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 385. Здрасьте! Вопрос совсем простой! Скажите какие команды используються для 1. Открытия файла на чтение... (ответов: 7)
Вопрос № 386. Еще раз здравствуйте, Boriss! Именно так все и было! :)) Только потомок должен имень свой метод Run,... (ответов: 1)
Вопрос № 387. В дополнение к вопросу о командах для работы с файлом! Как выделить цветом строку выведенную из файл... (ответов: 4)
Вопрос № 388. Уважаемые эксперты!! Может вопрос несовсем корректно задан но все таки. Подскажите идею как на флопи... (ответов: 5)

Вопросов: 4, ответов: 17


 Вопрос № 385

Здрасьте!
Вопрос совсем простой!
Скажите какие команды используються для
1. Открытия файла на чтение
2. Открытие файла на запись
3. Получить строку из файла
4. Получить символ из файла
5. Закрыть файл
6. Записать в файл изменения
Если у кого есть, то вышлите листинг программы для работы на чтение и запись с текстовыми файлами!!!



Вопрос отправлен: 22.12.2003, 14:56
Отправитель: monster (monster@polarcom.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Strory

Здравствуйте, monster!
Я думаю, что к Вам уже поступило много хороших ответов. Могу сказать только то, что всё это хорошо написано в Help'е. Если у Вас проблемы с английским, могу предложить перевод этого самого хелпа. Если надо, пишите:
mailto:strory@newmail.ru
Собственно перевод весит 913 Кб.
Перевод к Borland/Turbo Pascal 7.0 (файл turbo.tph)
Удачи :)

Ответ отправлен: 22.12.2003, 19:10
Отправитель: Strory


Отвечает fC

Здравствуйте, monster!
Ответы на все свои вопросы ищи тут
http://pascal.sources.ru/files/index.htm
Удачи!

Ответ отправлен: 22.12.2003, 15:17
Отправитель: fC


Отвечает Boriss

Приветствую Вас, monster!
Ежели вопрос простой, то почему сам на него не отвечаешь? Конечно, лихо было бы этим и закончить ;)) , но:
1) Reset(f);
2) Rewrite(f); и Append(f);
3) Read(f, s); и ReadLn(f, s); s - строка, куда считывать
4) См. пример
5) Close(f);
6) Flush(f); - по-видиому, имеется в виду это
Программ Вы хотите? Их есть у меня:

Приложение:

Ответ отправлен: 22.12.2003, 15:19
Отправитель: Boriss


Отвечает sir henry

Доброе время суток, monster!
1. Сначала нужно ввести файловую переменную, например F:
F : Text;
s : string;
ch: char;
2. Назначить этой переменной файл:
Assign(F, 'файл.txt');
3. Открытие файла для чтения:
Reset(F);
4. Открытие нового файла для записи:
Rewrite(F);
5. Открытие файла для добавления текста в конец:
Append(F);
6. Прочитать строку из файла:
ReadLn(F, s);
7. Прочитать символ из файла:
Read(F, ch);
8. Записать строку в файл:
WriteLn(F, s);
9. Закрыть файл:
Close(F);
----
А вот записать изменения в файл - это уже совсем другая история :). При этом необходимо работать не с самим файлом, а с буфером, куда переноситься содержимое файла. Все необходимые изменения производяться в буфере, а затем файл перезаписывается.
Этот тип работы с файлами описывается в разделе "Потоки". И, в общем-то, непосредственно к файлам отношения не имеет :). Для примера см. приложение.

Приложение:

Ответ отправлен: 22.12.2003, 15:50
Отправитель: sir henry


Отвечает Vitally

Доброе время суток, monster!
Программка проверяет наличие дискеты в дисководе - если есть - создает на дискете файл в который записывает имена и размер файлов заданного каталога... Не совсем то, что ты просил, но...


Приложение:

Ответ отправлен: 22.12.2003, 16:14
Отправитель: Vitally


Отвечает Drahus

Привет, Монстр! :)
Первым делом нужно связать имя файла с переменной:
Assign (MyFile, 'CoolText.txt');
Для MyFile нужно указать тип. Например TEXT. Можно записывать текстовую информацию (подробнее см. в справке).
Затем его можно открыть на чтениезаписьдозапись.
Append (MyFile); - для добавления записей. (Только если MyFile тип text).
Reset (MyFile) - открывает файл для чтения.
Rewrite (MyFile) - создаёт новый файл или переписывает существующий, то бишь, стирает всё из него.
Получить строку из файла:
Readln (MyFile, var) или Read (MyFile, var) - Первое считывает строку и переходит на следующую. Второе - считывает строку (до пробела, типа).
Writeln (MyFile, var) или Write (MyFile, var) - аналогично вышенаписанному, только вместо чтения запись.
Это для текстовых файлов. Для не текстовых (нетипизированных или просто FILE) исп. следующие процедуры:
BlockRead (MyFile, Buf, count, NRead) - где Buf - переменная в которую будет считыватся информация, размером count, а в NRead будет записано сколько в действительности считано.
BlockWrite (MyFile, Buf, count, NWrite) - :).
Close (MyFile) - закрыть файл.
Есть ещё несколько процедур для работы с файлами, см. в справке.
Я что-то написал, но получилась ерунда. BlockReafWrite я вроде вообще ни разу до этого не использовал. Так что глюки какие-то. Разберётесь.

Приложение:

Ответ отправлен: 23.12.2003, 17:13
Отправитель: Drahus


Отвечает Case_X

пџяЂпёпІпµя‚яЃя‚пІяѓяЋ п’п°яЃ, monster!
Vobsce eto est dage v sholnuh uchebnikah!

Приложение:

Ответ отправлен: 24.12.2003, 11:24
Отправитель: Case_X


 Вопрос № 386

Еще раз здравствуйте, Boriss!
Именно так все и было! :)) Только потомок должен имень свой метод Run, т.к. один класс будет обрабатывать процуру, а другой функцию. Вот так вот и началась эта бадья с Virtual. Я думал именно для этого Virtual и нужен... (Пример писать не надо! Сам могу выслать!! :D)
Вы, если не сложно, проясните мне вот что:
1)Если объект не динамический а статический - как проверить существует он или нет. Или программа убъет его сама по окончании работы?
2)Конструктор нужно вызывать всегда, или только если класс использует виртуальные методы? Тоже самое с деструктором. Например для того простенького примера, который Вы мне прислали нужен вызов конструктора?
3)Вы пишите, что деструктор должен быть виртуальным, но ведь тогда
а)К предку будет применен дестуктор потомка... Разве это правильно?! Мало-ли что я там понаделал у потомка...
б)Параметры у деструктора невозможно будет изменить. Не уверен, что деструктору очень нужны параметры, но - всякое может случиться.
4)Деструктор освобождает всю память, занятую объектом? Т.е. Если я в процессе работы объекта понахапал памяти под разные массивы и пр. я должен сам заботиться об их уничтожении или за меня это сделает деструктор?
5)Если есть литературка на эту тему - кинь на мыло пожалуйста!



Вопрос отправлен: 22.12.2003, 15:13
Отправитель: Vitally (vitally@inbox.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Boriss

Приветствую Вас, Vitally!
1) Надо понимать, что объект Вы разместили в обычной памяти, а не динамической:
type
PObj = ^TObj;
TObj = object
a: Array[1..1000] of real;
end;
и
VAR Obj: TObj; (а не PObj) ?
Да? Тогда он уже в памяти, ЕСЛИ ЕСТЬ К НЕМУ ОБРАЩЕНИЕ хоть одно. И программа его убъет по окончании.
{Попробуйте вызывать WriteLn(MemAvail), если к тому объекту не обращаться или обратиться: Obj.a[4]:=4;}
2) ВЕРНО, конструктор нужно вызывать ОБЯЗАТЕЛЬНО, если есть виртуальные методы, или хотите разместить объект в динамической памяти. Он создает таблицу виртуальных методов (VMT), в которую заносит (при загрузке ЕГО в память) адреса методов в опер. памяти.
И вызов идет не по имени, а по адресу. Тот, кто вызывает виртуальные методы (программа) даже не анализирует, есть VMT или нет, а просто обращается туда, где она ДОЛЖНА быть. Из-за этого и ошибки идут
3а) ДЕСТРУКТОР сначала ДОЛЖЕН вызывать деструкторы предков, и только после того, как они сработают, делать свою работу.
3б) ДЕЙСТВИТЕЛЬНО, не припомню ситуации, когда деструктору нужно было бы что передавать.
Идея в том, что у хорошего объекта ЕСТЬ абсолютно ВСЕ, что ему нужно для работы.
Но никто не запрещает иметь несколько деструкторов (как и конструкторов). Работает ведь само слово! И важно лишь, чтоб был вызван хоть один из них (и только один!)
4) ДА освободит, если это массивы объекта, а не указатели на массивы (!). По этой причине деструктор обычно делает так: if PAr <> nil then Dispose(PAr); ...
Впрочем под Виндами это уже не так фажно, если ВАША ПРОГРАММА ЗАВЕРШАЕТСЯ. Винды дают ДОСовской проге память, а потом сами и убирают. Конечно, если не резервировать память глобальную
5) Литература и есть и мало. Посмотрите на нашем сайте www.turbopascal.tk.
Там есть много учебников разного достоинства. Ежели что-то непонятно будет или лень читать, то пишите:
bsurin@mail.ru или ICQ: 320096696 - может быстрее будет :))

Ответ отправлен: 22.12.2003, 16:00
Отправитель: Boriss


 Вопрос № 387

В дополнение к вопросу о командах для работы с файлом!
Как выделить цветом строку выведенную из файла на экран???



Вопрос отправлен: 22.12.2003, 16:59
Отправитель: monster (monster@polarcom.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает fC

Здравствуйте, monster!
Строку можно выделить изменив цвет текста или его фон.
Все это можно найти на pascal.sources.ru
Удачи!

Ответ отправлен: 22.12.2003, 19:53
Отправитель: fC


Отвечает Boriss

Здравствуйте, monster!
Например так, как показано в приложении, ручками:

Приложение:

Ответ отправлен: 22.12.2003, 17:19
Отправитель: Boriss


Отвечает sir henry

Приветствую Вас, monster!
Это не работа с файлами, а работа с экраном :).
Переменная (или точнее типизированая константа) TextAttr:=$FT, где
F - это цвет фона (шестнадцатиричная),
T - это цвет текста (шестнадцатиричная).
Таким образом, прежде чем вывести текст на экран, предварительно нужно присвоить значение TextAttr:
TextAttr:=$07 - белые буквы на черном фоне,
TextAttr:=$1E - желтые буквы на синем фоне.

Ответ отправлен: 23.12.2003, 09:26
Отправитель: sir henry


Отвечает Drahus

Привет, Монстр! :)
В текстовом режиме В Паскале для изм. цвета вывода исп. процедура TextColor (color) - где color - цвет текста. Можно писать цифрами (2 - вроде красный) или словами: Red, Black, White и т.п.
Получается:
###
Read (MyFile, a); (a:string = 'Matrix has you!' :)
textcolor(green);
write (a);
###
Интересно получается, да? :)
Также можно изменить цвет фона. Для этого исп. процедура: TextBackground (color);.


Ответ отправлен: 23.12.2003, 17:13
Отправитель: Drahus


 Вопрос № 388

Уважаемые эксперты!!
Может вопрос несовсем корректно задан но все таки.
Подскажите идею как на флопике защитить текстовую инфу от несанкционированного просмотра.
С уважением Антон.



Вопрос отправлен: 23.12.2003, 06:45
Отправитель: антон (oven_mars@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Phenix

Приветствую Вас, антон!
Да никак.
Ну разве что разработай алгоритм шифрования или воспользуйся существующими прожками, и зашифруй инфу.

Ответ отправлен: 23.12.2003, 19:03
Отправитель: Phenix


Отвечает Boriss

Доброе время суток, антон!
Как и на любом другом. Простейший способ - байтовая операция XOR. Используется для простейшего шифррования

Ответ отправлен: 23.12.2003, 10:57
Отправитель: Boriss


Отвечает Drahus

Здравствуйте, Антон!
Можно сделать программу которая пометит участок диска занятый файлами как сбойный. Эта программа пусть лежит на этом же диске. При запуске она будет спрашивать пароль. Если введёте правильный, то она покажет что есть на диске. Но это думаю на Паскале будет трудновато сделать. Тут нужны знания ассемблера.

Ответ отправлен: 25.12.2003, 02:59
Отправитель: Drahus


Отвечает sir henry

Доброе время суток, антон!
1. Зашифровать файл. Это от флопика не зависит :). Самое универсальное средство. В инете вагон программ, которые создают виртуальные зашифрованые диски. Без знания пароля просмотреть содержимое будет невозможно.
2. Нестандартно отформатировать дискету. Например, с размером кластера в 515 байт :).
3. Если информации немного, то записать ее в загрузочный сектор дискеты.
4. Пометить кластеры как бэды, которые на самом деле таковыми не являются.

Ответ отправлен: 23.12.2003, 10:18
Отправитель: sir henry


Отвечает fC

Здравствуйте, антон!
Идей-то много, но кто ищет - тот всегда найдет :)

Ответ отправлен: 24.12.2003, 00:07
Отправитель: fC



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (27)
C / C++ (18)
Perl (4)
Builder / Delphi (19)
Pascal (22)
Basic / VBA (3)
Java / JavaScript (6)
PHP (11)
Криптография (8)
WinAPI (12)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (50)
"Железо" (26)
Поиск информации (19)
Администратору
Windows NT/2000/XP (28)
Linux / Unix (15)
Юристу
Гражданское право (14)
Семейное право (9)
Трудовое право (10)
КоАП (9)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное