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

RusFAQ.ru: Программирование на C / C++


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

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU
(Тестовый режим)

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 27
от 30.01.2005, 01:20

Администратор:Калашников О.А. (adm@rusfaq.ru)
В номере:Вопросов: 5, Ответов: 12


Вопрос № 16194
Здравствуйте, ув. эксперты.
Объясните, пожалуйста, доступным языком для начинающего как понять "файл прямого доступа"? И как его вообще можно реализовать?
Нужно сделать две работы, в одной нужно реализовать файл полследовательного доступа, в другой - файл прямого доступа.
Ну последовательного, если я правильно понял, это обычный файл с записями (например, последовательностью структур одинакового размера или текстовый файл)...
Скажите, я прав насчет последовательного файла?
А с прямым файлом... по учебнику (который похож на мемуары сумасшедшего, написанные в бреду) я понял, что доступ к каждой записи производится по ключу, который в свою очередь должен быть как-то связан с физическим адресом файла на носителе (!). В принципе, такое реализовать конечно возможно, но, насколько мне известно, если потом запустить такую программу, например под win2000, она просто не будет работать, т.к. win2k не разрешает доступ к винту на физическом уровне...
Если насчет прямого файла я не прав - спасибо нашим преподавателям... но сдавать работы все равно нужно...
Помогите, пожалуйста, разобраться...
Заранее благодарен за ответы.
Отправлен: 24.01.2005, 11:51
Вопрос задал: Pupkin Vasiliy Ivanovich (статус: Читатель)
Всего ответов отправлено: 3

Отвечает: AxMAD
Здравствуйте, Pupkin Vasiliy Ivanovich!
Тут наверное имеется в веду с прямой записью на винт или буферизацией в памяти пока не закроют файл.
См. соответствующие параметры у CreateFile !
Ответ отправил: AxMAD (статус: 8-ой класс)
Отправлен: 24.01.2005, 12:30

Отвечает: _vt
Здравствуйте, Pupkin Vasiliy Ivanovich!
Терминология ужасная конечно, но попробую объяснить. Файл "прямого доступа" - это и есть файл в его понимании, как элемента файловой системы. Т.е. ты можешь читать и писать из него и в него в произвольном месте. Файл "последовательного доступа" - это способ обращения к информации, когда известно о нем что-то одно, например последний его элемент. Например, есть такое понятие - stack: можно обратиться только к последнему элементу stack-а, но нельзя - к первому.

> т.к. win2k не разрешает доступ к винту на физическом уровне...

Это тоже бред. В Win2000 можно открыть весь диск, как файл с произвольным доступом. См. функцию CreateFile. Вообще, миф о том, что Win2000 что-то "не разрешает" идет от подобных преподов, которые не знают толком, что к чему. Win2000 не дает доступа средствами DOS, а родными API - ради бога.

* EMan 2 bet a: back in Black :)
Ответ отправил: _vt (статус: Академик)
Отправлен: 26.01.2005, 00:07

Отвечает: Федин А.В.
Здравствуйте, Pupkin Vasiliy Ivanovich!
1) Файл последовательного доступа - это любой не структурированный файл. Т.е. это файл в котором нельзя точно сказать по какому смешению будут находиться данные, например в 2001 записи.
2) Файл с прямым доступом - файл в котром вы можете обратиться к данным ЛЮБОЙ записи указав только ее НОМЕР. Файлы с прямым досикупом называются еще "типизированными".
3) Текстовый файл - это текстовый файл. Он не относиться ни к первому, ни ко второму типу.
Ответ отправил: Федин А.В. (статус: 2-ой класс)
Отправлен: 26.01.2005, 22:22


Вопрос № 16217
Здраствуйте.
По поводу предыдущего вопроса.
Дело в том, что я закомментировал строку:
#pragma comment(linker,"/MERGE:.rdata=.text")
и поэтому прога компилилась без ошибок, а так она выдает это(и в релизе и в дебаге)
--------------------Configuration: process - Win32 Debug--------------------
Linking...
LINK : warning LNK4078: multiple ".text" sections found with different attributes (40000040)
process.exe - 0 error(s), 1 warning(s)
2 _vt:
Как это файла ресурсов не хватает?Иначе бы компилятор ругнулся по этому поводу(типа что такое IDD_DIALOG1, а он молчит, значит все ок).
строка #pragma comment(linker,"/SUBSYSTEM:WINDOWS") не помогла!
Но я заменил WinMain на main и все, компилятор больше по этому поводу не ругался!
Вот а теперь вываливается эта ошибка(см. выше).

Приложение:

Отправлен: 24.01.2005, 21:06
Вопрос задал: Sager (статус: Читатель)
Всего ответов отправлено: 2

Отвечает: CrackLab
Здравствуйте, Sager!
Это не ошибка, то предупреждение, что вы пытаетесь объединить секции с разными аттрибутами (у .rdata например только для чтения, а у .text еще и выполнение)
Ответ отправил: CrackLab (статус: Студент)
Отправлен: 24.01.2005, 21:39

Отвечает: _vt
Здравствуйте, Sager!
Так. Давай по порядку. У тебя оконное приложение. Для него необходима функция WinMain и ключ линкера /SUBSYSTEM:WINDOWS. Это факт. Те pragm-ы, которые у тебя стоят, на функциональности программы никак не отражаются - они предназначены для уменьшения ее размера путем объединения секций EXE-файла. Если тебе требуется заставить работать программу, то выкинь все #pragma comment из программы, оставив только ту, которую указал я. Также можно выкинуть и ее - только указав этот ключ в свойствах проекта. Это первое. Второе - у тебя в обоих случаях не появляется диалог? Компилятор не ругается насчет IDD_DIALOG1, потому как он описан в файле resource.h, который ты явно подключаешь и приводишь его вместе с файлом cpp.А вот то, что в проекте подключается файл resource.rc, еще не очевидно. Но все-таки, скорее всего и он у тебя присутствует, просто из-за некорректного объединения секций программа может не з апускаться. Резюме - выкини все прагмы объединения секций и пробуй еще. Плюс проверь наличие resource.rc.

* EMan 2 beta: back in Black :)
Ответ отправил: _vt (статус: Академик)
Отправлен: 25.01.2005, 23:45


Вопрос № 16220
Привет!
Как с помощью C
получить адрес одной из функций в
программе и определить где ее код заканчивается
в памяти при выполнении программы.
Хочу защитить ее от дизассемблера.
Заранее благодарю за ответы!
Отправлен: 24.01.2005, 22:12
Вопрос задал: 1 (статус: Читатель)
Всего ответов отправлено: 3

Отвечает: CrackLab
Здравствуйте, cross!
Могу проконсультировать по защите программы. ICQ 29-29-29.
Ответ отправил: CrackLab (статус: Студент)
Отправлен: 24.01.2005, 22:37

Отвечает: vitya
Здравствуйте, cross!
Входная точка каждой функции является она сама. Однако ее размер и все остальное зависит от компилятора, его настроек... возможно даже от линкера. Ибо, например компилятор может создать пустую заглушку (которая просто будет переходом на настоящую функцию) и т.д.

Приложение:

Ответ отправил: vitya (статус: Профессор)
Отправлен: 24.01.2005, 22:37

Отвечает: AxMAD
Здравствуйте, cross!
Адрес функции примерно само название функции!!!
А вот определить где функция заканчивается это ....
Если вы бы программировали на асме
Ответ отправил: AxMAD (статус: 8-ой класс)
Отправлен: 25.01.2005, 09:03


Вопрос № 16221
Подскажите хорошую книжку по MFC - желательно advanced уровень - прошли этот курс в универе, хотелось бы укрепить курс и копнуть поглубже.
Отправлен: 24.01.2005, 22:54
Вопрос задал: хУБОПЧ дНЙФТЙК (статус: Читатель)
Всего ответов отправлено: 2

Отвечает: CrackLab
Здравствуйте,
Хороших книг по MFC мало. Я встречал много книг по MFС, но не могу сказать что это были хорошие книги, и советовать их можно только как совсем запасной вариант.
Хорошую же книгу я встречал только 1: Jeff Prosise - Programming Windows with MFC
Но не знаю можно ли ее назвать для advanced - там с нуля. Тем не менее это единственная книга по MFC, которой можно дать хорошую оценку. Я даже не знаю есть ли она в бумажном варианте на русском языке. У меня она в эл. виде на английском. И если с английским у вас хорошо - могу выслать.
Ответ отправил: CrackLab (статус: Студент)
Отправлен: 24.01.2005, 23:16

Отвечает: vitya
Здравствуйте, хУБОПЧ дНЙФТЙК!
Предлагаю посетить сайт http://club.shelek.com/ . Там есть книжки по данной теме.
Ответ отправил: vitya (статус: Профессор)
Отправлен: 25.01.2005, 11:49


Вопрос № 16224
Здравствуйте.
Задание в универе. Нужно реализовать POP3-клиент. Написать COM-объект, который собственно и общается с реальным POP3-сервером. И клиентскую программку, которая принимает имя сервера, пароль и учётную запись юзера.
Она это принимает, и вызывает функции COM-объекта, котоый работает с POP3 сервером.
Понятно, надеюсь. (писать на VC++6 и выше.)
Вот. Срок мне неделя. Нарыл в инете какие-то SDK, но они на C#. В общем, люди, где инфу можно скачать по этому поводу, задача-то типичная, наверняка существуют какие-нибудь экзамплы, исходники. С RFC POP3 разобраться чисто физически не успеваю. Мне б знать ЧТО писать, а напишу я быстро:).
Может советы будут какие? С чего начать и прочее.
Отправлен: 25.01.2005, 01:04
Вопрос задал: Yog (статус: Читатель)
Всего ответов отправлено: 2

Отвечает: _vt
Здравствуйте, Yog!
Создаешь проект MFC ActiveX control Wizard. Появится шаблон "COM-объекта". Задаешь ему необходимые методы, например: Connect, Fetch, Disconnect - и т.д. - сам разберешься, когда RFC почитаешь :) Там ничего сложного - всего несколько команд сервера, которые можно ему посылать, и принимать ответы от него! Начинать с изучения примеров - недавно находил класс для работы с Pop3 на codeguru.com

* EMan 2 beta: back in Black :)
Ответ отправил: _vt (статус: Академик)
Отправлен: 25.01.2005, 02:30

Отвечает: AxMAD
Здравствуйте, Yog!
Во-первых реализовать почтовый клиент можно спомощью сокетов, см. www.citforum.ru
Исходники: www.sources.ru, www.codenet, www.codeguru.com, www.ishodniki.ru, www.rusdoc.ru
Ответ отправил: AxMAD (статус: 8-ой класс)
Отправлен: 25.01.2005, 09:07


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Россия, Москва. Идея, дизайн, программирование: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Отписаться

В избранное