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

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


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

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

Выпуск № 720
от 28.01.2007, 16:35

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


Вопрос № 72164: Здраствуйте! Такой вопрос: как в Дельфи реализовать отправку папки на E-mail? Папка напр.: C:Documents and SettingsИМЯ_Учетной_записиApplication DataВопросы Может только файлов из это пипки. Основная проблема это определить имя учетн...
Вопрос № 72168: Здравствуйте, уважаемые эксперты! Дайте, пожалуйста, ссылку на какую-нибудь статью для простейшего шифрования данных. Дело в том, что у меня имеется класс: TNote. Через него создаю файл. А когда записываю в него данные на русском языке, отображаются ...
Вопрос № 72169: Уважаемые Эксперты помогите разобраться в следующем: 1) Можно ли в edit'е сделать невидимым текстовой курсор. 2) Как присвоить исполняемому файлу картинку отличную от стандартной. Спасибо MIXAIL...
Вопрос № 72248: добрый день! я немножко в затруднении, с решением казалось-бы элементарной вещи. вопрос такой: есть переменная стринг, которая в себе содержит некий текст, мне надо из этого текста взять некоторые строки для этого я нахожу их If (Pos('xxx', s...
Вопрос № 72272: Здравствуйте уважаемые эксперты. Вопрос такой: Как можно перевести текст из UNICODE в ANSI и обратно. Заранее спасибо....

Вопрос № 72.164
Здраствуйте!
Такой вопрос: как в Дельфи реализовать отправку папки на E-mail? Папка напр.: C:Documents and SettingsИМЯ_Учетной_записиApplication DataВопросы
Может только файлов из это пипки.
Основная проблема это определить имя учетной записи.
Помогите плз.
Отправлен: 22.01.2007, 22:15
Вопрос задал: Риштаков Александр Александрович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Leshka
Здравствуйте, Риштаков Александр Александрович!

uses
Windows

procedure TForm1.Button1Click(Sender: TObject);

Для экзаменаторов...
========
Ошибка!!! Ответ не точен!!!

var uname: PChar;
s: Cardinal;
begin
getUserName(uname,s);
Application.MessageBox(uname,uname);

end;

Данный код не является верным!!! (не работоспособен)
Видоизмененный рабочий код:

procedure TForm1.Button3Click(Sender: TObject);
var uname: array of char;
s: dword;
begin
s := 255;
SetLength(uname, s);
getUserName(Pchar(uname),s);
Application.MessageBox(pchar(uname),pchar(uname));
end;


=======
Gh0stik.

Ответ отправил: Leshka (статус: 1-ый класс)
Ответ отправлен: 23.01.2007, 10:36

Отвечает: Volhit
Здравствуйте, Риштаков Александр Александрович!
А вам зачем? :)
Об определении имени папки: Если речь идет о Windows, то все достаточно просто. Можно использовать переменные окружения HOMEDRIVE и HOMEPATH и API-функцию (GetEnvironmentVariable).
Например, так (функция возвращает путь к домашней папке пользователя):

function GetHomePath: string;
var ps : PChar;
begin

Result := '';
ps := AllocMem(256);
If GetEnvironmentVariable('HOMEDRIVE', ps, 256) > 0 then
begin
Result := ps;
if GetEnvironmentVariable('HOMEPATH', ps, 256) > 0 then
Result := Result + ps
else
Result := ''; // Если не получилось, то возращаем пусто
end;
// После использования освобождаем занятую память
FreeMem(ps);
end;
Ответ отправил: Volhit (статус: 2-ой класс)
Ответ отправлен: 24.01.2007, 10:14


Вопрос № 72.168
Здравствуйте, уважаемые эксперты! Дайте, пожалуйста, ссылку на какую-нибудь статью для простейшего шифрования данных. Дело в том, что у меня имеется класс: TNote. Через него создаю файл. А когда записываю в него данные на русском языке, отображаются русские буквы. Хотелось бы как-нибудь по-серьёзнее. Чтобы, скажем, английские отображались (например) или абракадабра какая-то. Может, библиотеку или компонент какой нужно. В общем, просвятите.
Спасибо!
Отправлен: 22.01.2007, 22:22
Вопрос задал: LogrusEx (статус: 10-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: sir henry
Здравствуйте, LogrusEx!
Есть алгоритмы шифрования простые и есть сложные. Алгоритм выбирают из условия стойкости к взлому и Ваших личных предпочтений.
Из простых алгоритмов обычно используют метод Цезаря (т.е. подстановка вместо одних букв других) и XOR-шифрование.
1. При подстановке создается таблица соответствия, например:
а - я
б - ю
в - э
и т.п.
При шифрации и дешифрации буквы подставляются в соответствии этой таблицей.
2. XOR-шифрование, это когда с каждой буквой проводится операция XOR.
Допустим ключ шифрования у Вас 5, тогда Вы получаете код каждой буквы (функцией Ord()), проводите операцию XOR:
Var
dd: integer;
s: string;
Begin
s:='Какая-нибудь строка';
For i:=1 To Length(s) Do
Begin
dd:=Ord(s[i]);
dd:=dd XOR 5;
s[i]:=Chr(dd);
End
End;
В результате получаем кракозябрики в строке. Дешифрация происходит точно так-же.
----------------
Из сложных алгоритмов используется, например, MD5. Ссылок не даю, т.к. не знаю, но Гугл или Яндекс дадут. :)
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 23.01.2007, 08:57
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Но я уже откопал пример покруче. И дешифрация есть. Но всё равно спасибо!

Отвечает: Leshka
Здравствуйте, LogrusEx!

Используйте кодирование Base64. Конечно это не шифрование, от "достаточно умных" людей таким текст не скроешь, но абракадабра получится. Если хочется шифрования под пароль то можно сделать методом подстановки или XOR. Ссылок дать не могу, поищите сами - по тому что я назвал полно литературы и даже готовых исходников.
Ответ отправил: Leshka (статус: 1-ый класс)
Ответ отправлен: 23.01.2007, 10:51
Оценка за ответ: 5
Комментарий оценки:
Да, про ХОР ы верно заметили. Нашёл книжку Ревича "Нестандартные приёмы программирования" - там как раз есть любительская криптография, где расписан приём ХОР шифрования ключом.


Вопрос № 72.169
Уважаемые Эксперты помогите разобраться в следующем:
1) Можно ли в edit'е сделать невидимым текстовой курсор.
2) Как присвоить исполняемому файлу картинку отличную от стандартной.
Спасибо MIXAIL
Отправлен: 22.01.2007, 22:40
Вопрос задал: MIXAIL (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Gh0stik
Здравствуйте, MIXAIL!

1) Создаем потомка TEdit, класс опишем таким образом:

type
TMyEdit = class(TEdit)
procedure WMPaint(var Msg: TMessage); message WM_Paint;
procedure WMSetFocus(var Msg: TMessage); message WM_SetFocus;
procedure WMNCHitTest(var Msg: TMessage); message WM_NCHitTest;
end;


Далее описываем самого потомка, и его методы....

Более детально смотрите в приложении.

После запуска проекта на форме будет одно поле ввода с указанными в вопросе свойствами.

2) Передвигаемся по меню в такой последовательности:
ProjectOptions...Вкладка ApplicationКнопка Load Icon... и в диалоговом окне выбираете нужную Вам иконку.

Good Luck!!!

Приложение:

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 23.01.2007, 00:52
Оценка за ответ: 5
Комментарий оценки:
Спасибо.Буду разбираться.

Отвечает: DeVampir
Здравствуйте, MIXAIL!
1. У TEdit есть свойство Cursor, если ему присовить (програмно или при проектировании) свойство crNone (или -1), то при прохождении мыши над компонетом, курсор будет исчезать (аналогично и для других компонентов)
2. Меню Project -> Options -> Application -> кнопка Load Icon -> выбирай любую! (только она должна быть в формате ico)
Удачи!
---------
Нам будет трудно - это терпимо! (с) М. Горшенев
Ответ отправил: DeVampir (статус: 3-ий класс)
Ответ отправлен: 23.01.2007, 06:09
Оценка за ответ: 4
Комментарий оценки:
Спасибо. Но я спрашивал про текстовой курсор,а не про курсор мыши.

Отвечает: Leshka
Здравствуйте, MIXAIL!

Для экзаменаторов!!!
Дублирующий ответ!!!
=*=Gh0stik=*=

По поводу картинки
Project-> Options, Application, Load Icon
Ответ отправил: Leshka (статус: 1-ый класс)
Ответ отправлен: 23.01.2007, 10:53
Оценка за ответ: 5
Комментарий оценки:
Спасибо!!!

Отвечает: Nick_K
Здравствуйте, MIXAIL!

Для экзаменаторов!!!
Дублирующий ответ!!!
=*=Gh0stik=*=

В Delphi исполняемому файлу можно назначить любую иконку в настройках проекта. (Project->Options)
Ответ отправил: Nick_K (статус: 3-ий класс)
Ответ отправлен: 23.01.2007, 13:53
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Не знал.

Отвечает: Volhit
Здравствуйте, MIXAIL!
1. Можно. HideCaret - есть такая функция API. В качестве параметра передаем хэндл эдита ( Edit1.Handle).

Для экзаменаторов!!!
Дублирующий ответ!!!
=*=Gh0stik=*=

2. В меню Project -> Application Выбираем "Load icon". Ну и на форме еще выбрать иконку.
Ответ отправил: Volhit (статус: 2-ой класс)
Ответ отправлен: 23.01.2007, 14:53
Оценка за ответ: 5
Комментарий оценки:
Спасибо.


Вопрос № 72.248
добрый день!
я немножко в затруднении, с решением казалось-бы элементарной вещи. вопрос такой:
есть переменная стринг, которая в себе содержит некий текст, мне надо из этого текста взять некоторые строки для этого я нахожу их If (Pos('xxx', s) <>0) then теперь сам вопрос, если мы проверили и нашли нам нужную строку, то как записать её в другую переменную? как я понимаю надо как-то указать начало строки и конец её, т.е переход на следующую строку.... когда использовал GUI, было намного проще. в мемо указывал нужную строку. memo1.lines[i]
Отправлен: 23.01.2007, 13:07
Вопрос задал: [CRA5H-OVERRIDE] (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: mvp
Здравствуйте, [CRA5H-OVERRIDE]!
Смотрите ф-ю copy. А если у Вас строки разделяются переходом на новую строку, то используйте класс TStringList:
st : TStrings;
//---
st := TStringList.Create;
st.Text = s;
//---

Таким образом получите возможность обращаться как и в memo: st[i] - i-тая строка текста.

Также можно указать разделитель (delimшter) в TstringList, чтобы, например строки разделялись не по переводу каретки, а, например, по "."
---------
Моя совесть чиста - не бывшая в употреблении
Ответ отправил: mvp (статус: Студент)
Ответ отправлен: 23.01.2007, 14:20

Отвечает: Volhit
Здравствуйте, [CRA5H-OVERRIDE]!
Используйте функцию "Copy"

function Copy(S; Index, Count: Integer): string;
S - строка, из которой копирем,
Index - с какой позиции копируем,
Count - количество строк для копирования ( Например, Length('xxx') )

В чем затруднения?
Ответ отправил: Volhit (статус: 2-ой класс)
Ответ отправлен: 23.01.2007, 14:25

Отвечает: DeVampir
Здравствуйте, [CRA5H-OVERRIDE]!
А чем разделены строки в переменной? Т.е. как у вас этот "переход на следующую строку" выглядит? Например, если взять содержимое Memo.Text, то там строки разделены двумя символами: #13+#10 Точно так же текст идет и в файле (TextFile). А если Вы его из файла берете - используйте не string, а класс TStringList - тогда можно будет обращаться с этим текстом так же как в Memo
Ну, а если все не так легко - остается обрезать начало строки (то, что до Pos) и после этого искать разделитель строки...
Удачи!
---------
Нам будет трудно - это терпимо! (с) М. Горшенев
Ответ отправил: DeVampir (статус: 3-ий класс)
Ответ отправлен: 23.01.2007, 16:23

Отвечает: Nick_K
Здравствуйте, [CRA5H-OVERRIDE]!
Воспользуйтесь функцией Copy(), которая позволит присвоить Вашей переменной кусок строки, выбранной длинны, начиная с нужной позиции.
Ответ отправил: Nick_K (статус: 3-ий класс)
Ответ отправлен: 23.01.2007, 17:05


Вопрос № 72.272
Здравствуйте уважаемые эксперты.

Вопрос такой:
Как можно перевести текст из UNICODE в ANSI и обратно.

Заранее спасибо.
Отправлен: 23.01.2007, 15:56
Вопрос задал: Alexo (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Трубчанин Андрей Сергеевич
Здравствуйте, Alexo!

Есть альтернативные блокноты (RPad, AkelPad, Shtirlitz, Bred), которые могут автоматически определять и сохранять в определенном формате тексты. Также в Total Commander встроенный просмотрщик может переключатся между форматами (если при просмотре выбрать меню Опции, то можно увидеть все возможные форматы).
Ответ отправил: Трубчанин Андрей Сергеевич (статус: 3-ий класс)
Ответ отправлен: 23.01.2007, 19:02
Оценка за ответ: 1

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Alexo!
Скорей всего, вам помогут вот эти функции:
UTF8ToANSI(const S: string): string;
ANSIToUTF8(const S: string): string;
либо, если этих не хватит, то вот еще:
UTF8Encode(const WS: WideString): string;
UTF8Decode(const S: String): WideString;
Более детально про использование этих и других функций можно посмотреть в справке.
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 23.01.2007, 23:52
Оценка за ответ: 3


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

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

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

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

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


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


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

В избранное