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

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

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

Выпуск № 654
от 18.11.2006, 17:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 410, Экспертов: 64
В номере:Вопросов: 5, Ответов: 9


Вопрос № 62317: Здраствуйте, есть директива выделения памяти {$M min,max} где максимальное значение есть 2147483647(т.е. 2 мб) но он не дает столько а дает если убрать последнюю цифру. Почему, и как взять больше?...
Вопрос № 62318: Доброго времени суток У меня такой вопрос Я сделал БД Interbase на моем компьютере все отлично работает когда я пробую запустить на другом компьютере то программа даже не запускается пути к БД совпадают это неможет быть из-за этого ..
Вопрос № 62365: Доброго времени суток уважаемые эксперты! у меня несколько вопросов относительно реестра и не только: 1) Как с помошью программы сделать копию системного реестра? 2) мне известно, что некоторые программы в реестре создают пути своег...
Вопрос № 62377: Доброго времени суток у меня такая проблема где обычно хранят пароли от доступа к программе (сразу уточню пользователей от 2 до 9 и они могут менять свои пароли) просто из-за 9 сточек нехочется подключать еще одну базу данных может е...
Вопрос № 62384: Пишу что-то вроде: blockread(f,a,1024,OKrec); //чтение из файла в массив a memo1.text:=pchar(a); где a:array[0..1023] of byte; f:file; OKrec:integer; Примечание. У меня в моей пр. на Делфи у мемо есть св-во text и отсутствуе...

Вопрос № 62.317
Здраствуйте, есть директива выделения памяти {$M min,max} где максимальное значение есть 2147483647(т.е. 2 мб) но он не дает столько а дает если убрать последнюю цифру. Почему, и как взять больше?
Отправлен: 12.11.2006, 17:04
Вопрос задал: Yujin (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Маренич Владимир
Здравствуйте, Yujin!
Директива {$M min, max} не выделяет память, а указывает на ограничания по стеку. Т.е. если Вы используете рекурсию, то при маленьком значении Max Вы не сможете сделать много вложенных вызовов, а при очень большом при "зацикливании" Вы можете очень долго ждать, пока переполнится стек и программа выдаст ошибку. Используйте (если вообще это нужно) эту директиву "с умом". А 2147483647 - это 2Гб а не Мб.
Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 13.11.2006, 17:26


Вопрос № 62.318
Доброго времени суток
У меня такой вопрос
Я сделал БД Interbase на моем компьютере все отлично работает когда я пробую запустить на другом компьютере то программа даже не запускается
пути к БД совпадают это неможет быть из-за этого
мне кажется по причине что на другом компе неустановлен Intebase?
если это так возможно эту проблемку как нибудь убрать без установки Interbase
заранее спасибо за ответ.
Отправлен: 12.11.2006, 17:07
Вопрос задал: Fins (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: PaVeL_Ekt
Здравствуйте, Fins!

А может использовать Query (SQL) со стандартной вкладки DBE
там вместо DataBaseName указать директорию и все, вот Вам готовая база данных без всяких серверов !!!
Если Вы знаете SQL то проблем не будет !!!
---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 3-ий класс)
Ответ отправлен: 13.11.2006, 07:39

Отвечает: Маренич Владимир
Здравствуйте, Fins!
Если у Вас программа использует СУБД "Interbas", то конечно же без Interbase (или его бесплатного аналога "Firebird") не обойтись. Это всё равно, что пытаться ехать на машине без двигателя. Если БД лежит не на локальной машине, то можно ограничиться установкой IBClient.
Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 13.11.2006, 11:01


Вопрос № 62.365
Доброго времени суток уважаемые эксперты! у меня несколько вопросов относительно реестра и не

только:
1) Как с помошью программы сделать копию системного реестра?
2) мне известно, что некоторые программы в реестре создают пути своего запуска. система при старте

запускает их. Какие это места? Как определить тип данного ПО?!? (пользовательская программа это или

системная) причём из моей программы.
3) Как определить степень загрузки процессора (как в диспетчере задач)?
4) Есть ли функция возвращяющая имя текущего сеанса?
После загрузки сеанса система слишком долко недоступна. Причина в том, что загружаются

разношерстные программы такие как nVidia, пару серверов (SQL, IB они нужны, но редко...), свитчер и

т.д. список большой пока всё запустится нервы уйдут... Огромная заинтересованность написать

программу которая брала бы на себя функцию запуска хотя бы какой-то части подобного вороха

программ или не запуска, по причине не нужности в тот день.
Отправлен: 12.11.2006, 22:30
Вопрос задал: Lejon (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Monah
Здравствуйте, Lejon!
Как програмно сделать копию реестра, не знаю.
За запуск програм из реестра отвечают ключи
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceEx
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices

Загрузку процессора можно узнать через реестр HKEY_DYN_DATAPerfStatsStatData соответствующий ключ Kernel CPUUsage.

Определить системная это программа или нет, возможно пожалуй лишь проверяя имя на содержание в нем "C:windows". Других способов не знаю.

Имя сеанса, если правильно вас понял,
GetUserName(UserName:PChar, UserNameLen:DWord);
---------
festina lente
Ответ отправил: Monah (статус: 9-ый класс)
Ответ отправлен: 13.11.2006, 08:58
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо, в особенности за GetUserName.


Вопрос № 62.377
Доброго времени суток
у меня такая проблема
где обычно хранят пароли от доступа к программе
(сразу уточню пользователей от 2 до 9 и они могут менять свои пароли) просто из-за 9 сточек нехочется подключать еще одну базу данных
может есть какието варианты
в *.txt +шифрование понятия неимею как
(тоесть зашифровать это пол дела) а вот расшифровке увы....
если есть простенький код то буду очень благодарен
заранее спасибо за ответ
Отправлен: 13.11.2006, 00:17
Вопрос задал: Fins (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mo-skin
Здравствуйте, Fins!
Много раз поднимался этот вопрос.

Вот пример простого шифрования XOR'ом:

Шифруем то что в Edit1 и записываем в файл c:/crypt.txt :

procedure TForm1.Button1Click(Sender: TObject);
var
f: file of word;
i:integer;
c:word;
begin
AssignFile(f,'c:/crypt.txt');
Rewrite(f);

for i:=1 to length(Edit1.Text) do
begin
c:= ord(Edit1.Text[i]) xor 12;
Write(f,c);
end;
CloseFile(f);

end;

А теперь расшифровываем и в Edit2 его!

procedure TForm1.Button2Click(Sender: TObject);
var
f: file of word;
i:integer;
c:word;
begin
Edit2.Text:='';
AssignFile(f,'c:/crypt.txt');
Reset(f);
while not eof(f) do
begin
read(f,c);
Edit2.Text:= Edit2.Text + chr(c xor 12);
end;
CloseFIle(f);

end;

Удачи...
---------
Чем больше женщину мы меньше, тем больше меньше мы ее!
Ответ отправил: Mo-skin (статус: 2-ой класс)
Ответ отправлен: 13.11.2006, 01:43

Отвечает: sir henry
Здравствуйте, Fins!
Добавлю. Проще всего пароли и имя пользователя хранить в файле INI. В Дельфи для работы с этими файлами есть специальный модуль.
INI - это обычный текстовый файл, в котором имя пользователя будет лежать в обычном текстовом виде, а вот пароль уже зашифрованным с помощью XOR:
[Раздел_пользователи]
Имя_пользователя1=Кирдым-бердым(это зашифрованый пароль1)
Имя_пользователя2=Турум-пурум(это зашифрованый пароль2)
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 13.11.2006, 04:05

Отвечает: PaVeL_Ekt
Здравствуйте, Fins!

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

а в реестре очень просто хранить любые данные (аккаунты, настройки и т.д. и т.п.)

в USES надо добавить Registry,

Приложение:

---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL

Ответ отправил: PaVeL_Ekt (статус: 3-ий класс)
Ответ отправлен: 13.11.2006, 08:00

Отвечает: Monah
Здравствуйте, Fins!
В реестре, кстати хуже. После переустановки ОС Эти данные будут потеряны. Лучше действительно в *.ini файле (uses IniFiles). А кстати, зачем дешифровывать пероль? Зашифруйте тот что ввел пользователь, и проверте с зашифрованым вариантом, который у вас хранится. Тогда можно использовать любой метод шифрования, даже если он не подлежит восстановлению. Например для данных в 1 байт result:=sqrt(x) mod 255; и все, восстановить пароль не возможно.
---------
festina lente
Ответ отправил: Monah (статус: 9-ый класс)
Ответ отправлен: 13.11.2006, 09:08


Вопрос № 62.384
Пишу что-то вроде:
blockread(f,a,1024,OKrec); //чтение из файла в массив a
memo1.text:=pchar(a);

где a:array[0..1023] of byte; f:file; OKrec:integer;

Примечание. У меня в моей пр. на Делфи у мемо есть св-во text и отсутствует св-во lines. Ошибки нет. Только в конце текста выводится значок, похожий на вычурную букву "ъ". Как блокировать вывод этого значка?
Отправлен: 13.11.2006, 01:27
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Monah
Здравствуйте, Blackie!
Свойство Text имеет тип String, а не PChar!
memo1.text:=strpas(a);
или даже memo1.text:=a;
если обьявить а как a:array[0..1023] of Char;
---------
festina lente
Ответ отправил: Monah (статус: 9-ый класс)
Ответ отправлен: 13.11.2006, 09:13


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное