Обновлено: 27 июля 2007 г. | Главная страница Мои программы Прочее |
Время от времени мне необходимо открывать почтовую программу с заполненной темой. Такие задачи возникают и при разработке этого сайта, и в работе - при программировании на Delphi. Наверное почти все знают, что чтобы открыть почтовую программу с адресом надо вызвать "mailto:адрес", но у этой команды несколько больше параметров:
mailto:[ mail address ] [?] [subject=subject] [&cc=mail address] [&bcc=mail address] [&body=message body] mail address — адрес получателя (несколько адресов разделённых запятой) subject — тема сообщения cc — копия (copy to) bcc — скрытая копия (blind copy to) body — само сообщение |
Возникла необходимость подготовить для Сбербанка список сотрудников нашей компании с указанием написания их фамилий в транслитерации по правилам Сбербанка. Возможно, данный код будет кому-то еще полезен.
function BankCardTranslit(sFam, sName: string): string; var aChar:array [char] of string; stFamE, stNameE: string; function GetChar(c: char): string; begin Result := |
Для удаления временных файлов в проектах на Delphi я использую приведенный ниже cmd-файл. Чтобы его создать нужно открыть блокнот и скопировать в него предложенный текст, при сохранении файла указать расширение ".cmd", а можно просто cкачать мой файл. Так как часто файлы одного проекта для удобочитаемости размещены в нескольких директориях, то этот метод удобнее, чем перечисление директорий руками, так как сработает на любом проекте, достаточно положить этот файл в корневую папку проекта, и при его запуске все временные файлы будут удалены.
del /s *.~* del /s *.ddp rem /s - для удаления в поддиректориях pause rem Для того чтобы увидеть результат удаления |
То есть числа до 26 переводятся в соответсвующие латинские буквы, а большие в две буквы. Использовал при "общении" с Excel для ввода значений калькулируемых полей (например, "=Sum(A1:A7)").
function IntToABC(const aValue:Integer):string; var n:integer; begin n:=aValue; Result:=''; if n>=676 then begin Result:='XX'; exit; end; if n>=26 then begin Result:=Chr(Ord('A')+(n div 26)-1); n:=n mod 26; end; Result:=Result+Chr(Ord('A')+n); end; |
Из строки содержащей номер телефона выкидываются все посторонние символы: скобки, дефисы пробелы - всё кроме цифр.
function PhoneNumberSkobkiRemove(ast:string):string; var i:integer; st:string; begin st:=''; for i:= |
Работа организована на стандартных компонентах (TOpenDialog, TComboBox, TButton).
TComboBox можно заменить TEdit, но тогда возможно отобразить только имя последнего открытого файла,
в то время как ComboBox позволяет выбрать из списка.
Моменты связанные с сохранением списка имен открытых файлов здесь не рассматриваются.
Пример использования:
Ниже приведен код обработчика события OnClick для кнопки. Обозначения: dlgOpen: TOpenDialog (не забудьте добавить Dialogs в секцию Uses), CBFile:TComboBox.
procedure TForm1.btnOpenDlgClick(Sender: TObject); var st:string; begin |
Алгоритм: если нашли файл введенный "руками" в ComboBox, то открываем диалог выбора файла с выбранным этим файлом, если не нашли выбираем ближайшую существующую на диске "родительскую" директорию и открываем диалог. Если пути введенного в ComboBox на диске нет, или ComboBox.Text пустой, то в качестве начальной директории используем путь к программе.
В список ComboBox я добавляю имя нового файла в момент начала работы с файлом. Это позволяет не сохранять пользовательские "блуждания" по диску. Сохранять рекомендую в INI-файлы (не зачем реестр Windows забивать своим хламом) - запись при закрытии окна, чтения при создании.
PS: знаю, что некоторые скажут, есть же библиотеки компонентов, в которых схожие функции реализованы, например, JVCL. Но мне кажется правильнее не использовать "сторонних" компонентов в приложениях, тем более в крупных, т.к. простая перекомпиляция на новом компьютере может занять у вас массу сил и времени.
Добавляем процедуру аналогичную нижеследующей, где stCompName - имя компьютера, stUserName - имя пользователя программы, или Windows, если необходимо указываем другие параметры. Файл с описанием ошибок создается в директории с программой, с расширением ".err". Не забудьте прописать ее в любой из секций (например, private) объявления формы.
procedure TForm1.LogException(Sender: TObject; E: Exception); var FileName:string; F:TextFile; begin FileNAme:=ChangeFileExt(Application.ExeName, |
В процедуру создания главной формы приложения (onCreate) добаляем следующую строку (лучше в начале):
Application.OnException:=LogException; |
Примеры с SQL | Мои программы | В начало |
Вы
посетитель этой странички с 02 марта 2006 года |
Copyright © 2000-2007 svv О сайте svv@narod.ru |