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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2009, 09:03   #1
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
Вопрос Многопроцессорность в Delphi и работа с файлами в Unicode

Здравствуйте еще раз!
У меня 2 вопроса:
1. Как реализовать многопроцессорность, т.е. чтобы программа сама решала, какому ядру отдавать определенный объем данных (хотя по моим наблюдениям и тестам - если создать двупоточное приложение на 2-ядерном проце, где каждый поток грузит проц на все 100%, винда распределяет автоматом нагрузку на оба ядра, в итоге в диспетчере задач загрузка ЦП 100%. Вопрос - это и есть многопроцессорность, или это не совсем то?).
2. Возможно ли производить операции с файлами (деление, сборка, шифрование, дешифрование) в кодировке Unicode, используя двубайтное слово вместо однобайтного? Если возможно, то есть ли преимущества от такого подхода (по возможности перечислить и пару примеров работы с файлами в Unicode на делфи)?

Если у кого-то возникали необходимые задачи и кто-то в этом разбирается или есть ссылки на любые источники по этой тематике, то буду очень благодарен!
P.S. Хочу написать приложение, эффективно использующее ядра ЦП. Шифратор/дешифратор файлов
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 24.09.2009, 09:25   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Шифратор и дешифратор текстовых файлов? Если не только, то никак не могу понять причем здесь юникод?
И еще: я всегда считал, что многопроцессорность и многоядерность это разные вещи.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 24.09.2009, 10:05   #3
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Почему текстовых? Любых Но дело не в этом. Юникод никакого отношения к многопроцессорности не имеет. Просто в одной теме я задал 2 вопроса, чтобы их(темы) не плодить. ПОПРОШУ СРАЗУ МОДЕРАТОРОВ - НЕ УДАЛЯЙТЕ ТЕМУ ИЗ-ЗА НАРУШЕНИЯ ПРАВИЛ, ПЛИЗ! Знаю, что 1 тема - 1 вопрос, но просто вопрос про юникод мизерный и не стоит новой темы.
Согласен, что многопроцессорность и многоядерность это разные вещи. Я имел ввиду многоядерность
Utkin, так вы можете чем-нибудь помочь?
to all: ребята, помогите!
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 24.09.2009, 10:07   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Для начала давайте уясним Вашу задачу. Как на алгоритм шифрования/дешифрования влияет юникод? Допустим я хочу зашифровать екзешник (а чтобы без меня не запускали) и что? Просто чтобы помочь, нужно понять о чем идет речь. А как мне кажется Вы сами не совсем понимаете суть задачи, куда уж мне. Потому и задаю такие вот глупые вопросы, а не с целью Вас поддеть или как-то еще.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 24.09.2009, 10:09   #5
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Цитата:
Шифратор и дешифратор текстовых файлов? Если не только, то никак не могу понять причем здесь юникод?
Просто стало интересно, возможно ли работать с бинарными файлами посимвольно в режиме юникод (2 байта на символ): ведь существует же функция CreateFileW. Или она только для открытия файла с именем в юникоде?
И оперировать с файлом можно только блоками, кратными байту?
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 24.09.2009, 10:12   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от 3D Hunter Посмотреть сообщение
Просто стало интересно, возможно ли работать с бинарными файлами посимвольно в режиме юникод (2 байта на символ): ведь существует же функция CreateFileW. Или она только для открытия файла с именем в юникоде?
И оперировать с файлом можно только блоками, кратными байту?
В смысле кратным байту? Вообще операционка считывает файлы блоками и по умолчанию он равен 512 байтам. то есть если Вам нужно байт, все равно прочтется 512 (если Вы не изменяли этот параметр). Для бинарных файлов работа осуществляется побайтно. Только псих (извините это я образно, к Вам не относится, вообще мой стиль изложения всегда экспрессивен) будет читать бинарные файлы через символы.
Итак, отбросьте пока юникод куда-нибудь и расскажите как Вы хотите шифровать свой файл (в общих чертах, не думайте, что я хочу украсть Ваши идеи).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 24.09.2009 в 10:14.
Utkin вне форума Ответить с цитированием
Старый 24.09.2009, 10:27   #7
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Да тут грандиозный проект намечается Прога должна шифровать/дешифровать файлы разными алгоритмами. Причем каждый алгоритм это отдельная DLL. Шифровать буду блоками по 1 mb (для достижения быстрого шифрования для FATxx). Режимов шифрования 3: Стандарт (исходный файл ->результирующий файл), Архив (все файлы->один файловый бинарник), стеганография(то же, что и архив, но запись в конец выбранного файла). Приче операции(шифр/дешифр) должны распараллеливаться, если число ядер более 1, т.е каждое ядро оперирует с одним файлом. Еще много нюансов Образно так.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 24.09.2009, 10:38   #8
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Так что вы можете поведать мне насчет многоядерности?
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 24.09.2009, 10:43   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Общие моменты: для файловой системы FAT нужно также знать размер считываемого блока - это нужно для ускорения работы программы. Считывать за раз 1 Mb жестоко и утомительно. Я предлагаю Вам создать некоторый буфер в памяти (ну пусть будет 1 mb) и считывать в него в цикле данные порциями по столько байт, сколько читается для Вашей файловой системы за раз (еще раз повторюсь, что по умолчанию для NTFS этот блок равен 512 байтам). Таким образом на чтение и записи Вы получите максимальную скорость для работы с винчестером. Аналогично и для FAT, нужно узнать размер блока и считывать именно этими блоками.
Далее в буфере осуществляете свои махинации по шифрованию. Оставим пока ядра, расскажите в какое место вы хотели засунуть юникод (я имел ввиду место алгоритма)? Юникод - это представление символов двумя байтами (ну грубо говоря можно трактовать таким образом). В Вашем случае Вы работаете с байтами, на что Вам строки? И совершенно без разницы что представляет собой байт - полюникода или кусок цифры Integer.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 24.09.2009, 10:52   #10
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Не, просто хотел понять, возможно ли шифровать двубайтное слово за раз, типа
Код:
var nu_init, nu_result:word;      
...
nu_result:=nu(_init shl 4) xor 5) or 99 //бла бла бла...типа "шифрование"
Т.е. могу я применять лог операции к двубайтным числам?
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами (Delphi 7) сер4ей Помощь студентам 8 12.11.2011 19:11
Работа с файлами в Delphi 7 NeAlSe Помощь студентам 11 19.11.2010 17:08
Delphi 7. Работа с файлами Flame_of_Death Помощь студентам 8 10.07.2009 12:25