Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

Новый модуль , сборник полезных процедур от ACS inc.   Найти похожие ветки 

 
Black_phoenix ©   (2005-01-04 12:26) [0]

Так как кладовка какого то не работает выкладываю модуль на narod  :(  http://club-soft.narod.ru/acs_utils_1.0.rar

Описание сдеся :

acs_utils Представляет из себя сборник полезных функций

// ******************************* Описание функций

// ----------- Функции для перевода программы на другой язык

procedure SaveLangText(FileName : String);  // Сохранение в указанном файле Caption и Text всех видимых контролов
procedure LoadLangText(FileName : String); // Загрузка из указанного файла всех надписей контролов

Внимание ! Обрабатываются эти контролы :

tOpenDialog
tsavedialog
tOpenPictureDialog
tsavePictureDialog
tPageControl
tTabControl
tRichEdit
tStatusBar1
tListView
tTreeView
TBitBtn
tSpeedButton
tCheckListBox
tStaticText
tmemo
tCombobox
tlisbox
tPanel
tLabel
tButton
tChckbox
tGroupbox
tRadionbutton
tMenu
tRadioGroup

Внимание ! При сохранении в ini файл если есть запись на обрабатываемый контрол то данные не записываются , если данных в ini файле нет то тогда функция запишет Caption или Text контрола

// --------- Работа с приложением

procedure SaveApplicationIni(SelForm : TForm); // Записать текущее положение программы на экране в ini файл
procedure LoadApplicationIni (SelForm : TForm); // Загрузить сохраненное положение приложения на экране

// -------- Работа с ini файлом ( ini файл создается в каталоге программы )

procedure SaveParamIntToIni( IntParam : Integer; Section : String); // Записать integer данные в ini файл
procedure SaveParamBoolToIni( BoolParam : Boolean; Section : String); // Записать boolean  данные в ini файл
procedure SaveParamStrToIni( StrParam : String; Section : String); // Записать string данные в ini файл

procedure LoadParamStrToIni(var StrParam : String; Section : String); // Прочитать integer данные из ini файла
procedure LoadParamBoolToIni(var BoolParam : Boolean; Section : String); // Прочитать boolean данные из ini файла
procedure LoadParamIntToIni(var IntParam : Integer; Section : String); // Прочитать string данные из ini файла

// --------- Дополнительные функции

procedure ShowInTaskBar(ShowForm : Boolean); // Спрятать показать кнопку приложения на панели задач
function  FileList (DirName, Filter : String) : TStringList; // Поиск файлов по маске в определенном каталоге
function GetCMDLineFile (CommandLine : String) : String; // Получить командную строку приложения
function GetFileLength (FileName : String) : LongInt; // Получить размер указанного файла в байтах
function GetAmpDir : String; // Получить исходный путь каталога приложения
function AppendSlash(DirName : String) : String; // Функция возвращает путь к указанному каталогу но с установленным слешем в конце

// -------- Регистрация приложений в системе

procedure CreateRegClass (RegClassName, RegKeyDescr : String; IconIndex : Integer); // Регистрация класса и иконки ( с текущим приложением )
procedure RegExtension (RegExtName, RegClassName : String); // Регистрация класса с указаными приложением

version 1.0

Email [email protected] \ [email protected]
www.omega-sector.kz/acs/
forum www.omega-sector.kz/acs/forum/


 
Чеширский_Кот ©   (2005-01-04 13:56) [1]

кол-во функций просто убивает...


 
ssk ©   (2005-01-04 14:03) [2]

убивает то, что в архиве DCU :-/

>автору
PAS нельзя было заархивировать? или исходник жутко секретный?


 
TUser ©   (2005-01-04 14:06) [3]

Также не меньше половины функций убивают тем, что их реализация не занимает больше 1 строчки


 
Black_phoenix ©   (2005-01-04 14:14) [4]

> ssk ©   (04.01.05 14:03) [2]

Даю просто так .. так вы же хотите ещё большего ! Вот что значит давать народу полезные наработки

> TUser ©   (04.01.05 14:06) [3]

Перевод программы ты в одну строчку не напишешь ! а лучше реализации я не встречал

Pas не дам ( по крайней мере сейчас ) так как я затратил и своё время на это.Функции действительно полезные ! особенно перевод.
И требовать от меня что то это просто не уважение


 
Black_phoenix ©   (2005-01-04 14:17) [5]

Тем более для начинающих этот модуль будет только в помощь.
Напрмер чтобы добавить перевод к любой своей программе нужно всего лишь затратить 3 минуты на подключение модуля и обработки 2х строк


 
ssk ©   (2005-01-04 14:24) [6]

>Black_phoenix

поверь, ничего супер-революционного в твоих функциях нет


 
Black_phoenix ©   (2005-01-04 14:29) [7]

> ssk ©   (04.01.05 14:24) [6]

Я знаю ! :)

Но многим это поможет сократить время разработки программы !
И не нужно мне говорить ничего такого. Я выложил модуль и не требую ничего в замен так что качайте , а кому будет что то нужно ещё обращайтесь поговорим :)


 
TUser ©   (2005-01-04 14:36) [8]


> > TUser ©   (04.01.05 14:06) [3]
>
> Перевод программы ты в одну строчку не напишешь ! а лучше
> реализации я не встречал

Не меньше половины - это еще не все! А в целом согласен с [6] - такой модуль был бы полезен, если бы ты открыл исходники. Его можно было бы добавить в FAQ и посылать туда начинающих. Также подобные наработки могут быть полезны для внутреннего пользования - написал туда что-то, свалил в несколько модулей то, что сам часто используешь - и подключай. Для того, чтобы подобный модуль был полезен не только тебе, там должно быть примерно в 10-20 раз больше функций, тогда и я, глядишь, чего-нибудь для себя там накопаю. А пока, мне например, перевод контролов на нужный язык нафиг не нужен, а вот исходный путь каталога приложения я и без твоего модуля вытащу.


 
250   (2005-01-04 14:49) [9]

>если есть запись на обрабатываемый контрол то данные не записываются
Жаль! А так хотелось бы большего :)


 
KSergey ©   (2005-01-04 14:58) [10]

Мне совершенно не понятно что есть "перевод". И как это связано с сохранением... Да и подобные вещи я совершенно точно видел, к стати, в дельфи они тоже есть.
Потом, заменить лишь текст для адаптации к другому языку - это смешно, т.к. слишком мало.
Как правило весь интерфейс надо переделывать ввиду различной длины надписей.

А вообще "скрывать" такие ф-ции - просто смешно. Они делаются элементарно, включая этот самый хваленый "перевод"
И еще, к слову.
Исходники интересны хотя бы для того, чтобы оценить можно ли вообще этим делом пользоваться. А то видали тут, хорошо, что авторы были не столь стеснительны - после просмотра исходников пользоваться как-то сразу не хочется... воизбежании..

И еще, по поводу "я же работал"
То, что часто в общем доступе в FAQ - действительно профессиональные, классно сделанные вещи. Ваш же детский лепет - нафиг не нужон.


 
KSergey ©   (2005-01-04 15:27) [11]

По работе с ini файлом несколько вопросов
1.

> ( ini файл создается в каталоге программы )

Ага, славно. А имя у него какое?

2.
> procedure LoadParamIntToIni(var IntParam : Integer; Section
> : String); // Прочитать string данные из ini файла

Ну ладно, в комментарии подозреваю ошибка.
Но вопрос по существу: если данные не прочитались (не было такого параметра, например) - как я об этом могу узнать и какое значение будет у IntParam после этого?

3. и главый вопрос: чем TIniFile не угодил?

Другие вопросы:

> procedure SaveApplicationIni(SelForm : TForm); // Записать
> текущее положение программы на экране

У программы есть положение на экране???! А если есть, то при чем тут какой-то параметр TForm?

> function GetCMDLineFile (CommandLine : String) : String;
> // Получить командную строку приложения

А использовать CmdLine из System - не прикольно? Или еще проще - сразу ParamCount + ParamStr?

> function GetAmpDir : String; // Получить исходный путь каталога
> приложения

Это в смысле

ExtractFileDir (Application.ExeName)

Оно?

> function AppendSlash(DirName : String) : String; // Функция
> возвращает путь к указанному каталогу но с установленным
> слешем в конце

Предлагаю следующую, более универсальную трактовку, аналогичную по функционалу:

//////////////////////////////////////////////////////////////////////
// Дописывает к строке указанный конечный символ, если строка
// не оканчивается на этот символ; версия с параметром по умолчанию -
// для пути к каталогу
//////////////////////////////////////////////////////////////////////

procedure SetStrEndCh (var AStr: String; const AEndCh: Char = "\");
var
 L: Integer;
begin
 L := Length(AStr);
 if L < 1 then
   AStr := AEndCh
 else
 begin
   if AStr[L] <> AEndCh then  AStr := AStr + AEndCh;
 end;
end;


PS
Прошу воспринять все как конструктивную критику.

К стати, вот до кучи, вдруг тоже сгодится
Дарю ;)


// отрезает указанное кол-во символов от строки слева
function LeftStr (const S: String; const i: Integer): String;
begin
 if i <= 0 then
   LeftStr := ""
 else
   LeftStr := Copy(S, 1, i)
end;

// отрезает указанное кол-во символов от строки справа
function RightStr (const S: String; const i: Integer): String;
begin
 if i <= 0 then
   RightStr := ""
 else
   RightStr := Copy(S, Length(S)-i+1, i)
end;

// отрезает от строки начиная с указанной позиции - и до конца
function EndingStr (const S: String; const i: Integer): String;
begin
 if i <= 0 then
   EndingStr := ""
 else
   EndingStr := Copy(S, i, Length(S)-i+1)
end;


 
TUser ©   (2005-01-04 15:36) [12]

И еще вдогонку - IncludeTrailingBackslash


 
KSergey ©   (2005-01-04 15:39) [13]

> [12] TUser ©   (04.01.05 15:36)

Гы, прикольно... ;) И не знал ;)


 
GrayFace ©   (2005-01-04 15:51) [14]

А как устанавливать DCU?
Black_phoenix ©   (04.01.05 14:14) [4]
Функции действительно полезные ! особенно перевод.

Ну, например, function AppendSlash(DirName : String) : String; дублирует стандартную функцию.


 
Чеширский_Кот ©   (2005-01-04 15:54) [15]

резюме: такой, простите, отстой нужно подальше прятать от общественных глаз, шобы не забросали тухлыми помидорами...


 
KSergey ©   (2005-01-04 16:09) [16]

> [15] Чеширский_Кот ©   (04.01.05 15:54)

Нет, я в принципе вполне понимаю радость первооткрывания (для себя) всех этих вещей...
Вот только сам, увы, все больше сталкиваюсь с тем, что все мои "выдумки" давно уже выдуманы и проработаны на хорошем уровне с нюансами, о которых я и не подозревал... :(

Что не умаляет заслуг автора как таковых, конечно, но, увы, на самом деле...

ЗЫ.
Как, например, вычитанная сегодня на этом форуме фраза:

"Оказалось, что многие сервера работают не на Windows, а на Unix [имеются в виду Web-сервера]"

Как забавна сия наивность, как интересно наблюдать за открытиями многогранности мира ;) Я без издевки.


 
Black_phoenix ©   (2005-01-04 16:28) [17]

Удалено модератором


 
Black_phoenix ©   (2005-01-04 16:29) [18]

Удалено модератором


 
Black_phoenix ©   (2005-01-04 16:29) [19]

Блин глючный инет .. :)


 
Alexander Panov ©   (2005-01-04 16:41) [20]

Black_phoenix ©   (04.01.05 16:29) [19]

Не слушай их-)

Когда сделаешь что-то полезное, всегда приятно тебе, но не всегда другим.


 
KSergey ©   (2005-01-04 17:08) [21]

> [18] Black_phoenix ©   (04.01.05 16:29)
> Более менее полезное сообщение.

Спасибо, конечно, вот только вопросов там было больше одного... Или я зря расшибался?


 
begin...end ©   (2005-01-04 17:25) [22]

> [11] KSergey ©   (04.01.05 15:27)

> function LeftStr
> function RightStr

Уже имеются в Delphi 7.


 
Чеширский_Кот ©   (2005-01-04 17:27) [23]

Панов, зачем изобретать велосипед?


 
KSergey ©   (2005-01-04 17:30) [24]

> [22] begin...end ©   (04.01.05 17:25)
> > function LeftStr
> > function RightStr
> Уже имеются в Delphi 7.

Есть такое дело.... Но т.к. D < 7... Перейдем - выкинем, делов то ;)
Вообще, если о строках речь вести - то есть много готовых, замечательных библиотек...;)


 
Чеширский_Кот ©   (2005-01-04 17:31) [25]

не, давайте вообще весь SysUtils перепишем и никого при этом не будем слушать


 
begin...end ©   (2005-01-04 17:32) [26]

> [25] Чеширский_Кот ©   (04.01.05 17:31)

Займитесь на досуге.


 
Чеширский_Кот ©   (2005-01-04 17:37) [27]

сейчас, разбежался


 
uny ©   (2005-01-04 18:07) [28]

если первая наработка, то автора понять можно. а так - да хотя бы прога dscaler - с исходниками скачать, посмотреть, подумать))
написать им можно, образумить:D


 
Anatoly Podgoretsky ©   (2005-01-04 18:38) [29]

После 17-18 у кого то еще есть желание смотреть и теб более запускать?


 
GuAV ©   (2005-01-04 19:19) [30]

Black_phoenix ©   (04.01.05 12:26)

> Внимание ! Обрабатываются эти контролы :

Зачем такое ограничение ?
Когда я подобной фигнёй страдал я сделал для всех строковых св-в всех контролов.


> // --------- Работа с приложением

> // -------- Работа с ini файлом ( ini файл создается в
> каталоге программы )

С ини файлами я предпочёл бы работать через TCustomIniFile.

Кстати см. rxLib - там есть компоненты для сохранения свойств в ини визуально (и размеров формы тоже есть)

function  FileList (DirName, Filter : String) : TStringList; // Поиск файлов по маске в определенном каталоге
Такое лучше было бы сделать так
function  FileList (DirName, Filter : String ; Dest: TSrings)

> function GetCMDLineFile (CommandLine : String) :
> String; // Получить командную строку приложения

Не понял.


> ShowInTaskBar


> GetFileLength


> GetAmpDir


> AppendSlash

Я предпочту написать эту одну строчку кода. Вместо того чтобы использовать функции этой библиотеки.


 
Black_phoenix ©   (2005-01-05 06:40) [31]

> Anatoly Podgoretsky ©   (04.01.05 18:38) [29]

> После 17-18 у кого то еще есть желание смотреть и теб более запускать?

А после 50 есть желание унижать других ! Как это знакомо :)


 
KSergey ©   (2005-01-05 09:35) [32]

> [31] Black_phoenix ©   (05.01.05 06:40)
> А после 50 есть желание унижать других ! Как это знакомо

А по существу (в том числе и на другие вопросы) нечего ответить??!
Странно, тогда мне действительно жаль потраченного мною времени на их написание, я надеялся на большее.


 
Kair ©   (2005-01-05 10:48) [33]

А так зачем?



type
 TacsShell = class(TObject)
 private
   function regReadString(aKey: HKEY; const Path: String): String;
   procedure regWriteString(aKey: HKEY; const Path: String; const Value: String);
   procedure strStripLast(var S: String);
   function strLastCh(const S: String): Char;
   procedure regParsePath(const Path: String; var aPath: String; var aValue: String);
   function GetApplicationFileName: String;
 public
   function AppendSlash(DirName: String): String;
   function GetAmpDir: String;
   function GetFileLength(FileName: String): Longint;
   function GetCMDLineFile(CommandLine: String): String;
   procedure SaveLangText(FileName: String);
   procedure LoadLangText(FileName: String);
   procedure ShowInTaskBar(ShowForm: Boolean);
   procedure CreateRegClass(RegClassName: String; RegKeyDescr: String; IconIndex: Integer);
   procedure RegExtension(RegExtName: String; RegClassName: String);
   procedure SaveApplicationIni(SelForm: TForm);
   procedure SaveParamIntToIni(IntParam: Integer; Section: String);
   procedure SaveParamBoolToIni(BoolParam: Boolean; Section: String);
   procedure SaveParamStrToIni(StrParam: String; Section: String);
   procedure LoadApplicationIni(SelForm: TForm);
   procedure LoadParamStrToIni(var StrParam: String; Section: String);
   procedure LoadParamBoolToIni(var BoolParam: Boolean; Section: String);
   procedure LoadParamIntToIni(var IntParam: Integer; Section: String);
   procedure GetLangTags(FileName: String; var Author: String; var Lang: String; var Comment: String);
   function FileList(DirName: String; Filter: String): TStringList;
 end;

var
 PlayerShell: TacsShell;



 
KSergey ©   (2005-01-05 10:57) [34]

> [33] Kair ©   (05.01.05 10:48)
> А так зачем?

Это о чем???


 
Aristarh   (2005-01-05 10:59) [35]

>KSergey ©   (05.01.05 09:35) [32]
>Странно, тогда мне действительно жаль потраченного мною времени
>на их написание, я надеялся на большее.

Вот и ладушки. Самое время заняться работой вместо того, чтобы изгаляться над новичками.


 
KSergey ©   (2005-01-05 11:07) [36]

> [35] Aristarh   (05.01.05 10:59)
> чтобы изгаляться над новичками.

Это изгаляться??!!


 
Kair ©   (2005-01-05 11:37) [37]


> KSergey ©   (05.01.05 10:57) [34]
> > [33] Kair ©   (05.01.05 10:48)
> > А так зачем?
>
> Это о чем???


Это в его модуле написано было.
Думаю, в класс пихать было лишним.


 
esu ©   (2005-01-05 11:43) [38]


> Так что не парьтесь ! Если можете написать лучше то пишите
> , если не можете так качайте и пользуйтесь на халяву :)
>

Дык откуда ж мне знать лучше я могу или хуже если нет исходников ? :) А так в интернете множество исходников для всех твоих функций но по крайней мере я смогу их нормально отладить, оценить качество реализации... Да и для совсем новичков полезнее наверное все ж с исходниками разбираться чем некий dcu юзать.


 
Black_phoenix ©   (2005-01-06 15:32) [39]

Вышло обновление модуля до верси 1.1 : www.club-soft.narod.ru/acs_utils_1.1.rar

- Обновление коснулось перевода контролов : теперь так же обрабатываються и Hint"s в таких компонентах как

TBitBtn
tSpeedButton
tPanel
TButton
TCheckBox
TRadioButton

Данные обрабатываються только в том случае если у компонента свойство ShowHint установлено в True и если в Hint есть текст


 
TUser ©   (2005-01-06 15:41) [40]


> Вышло обновление модуля до верси 1.1

Я готов скачать билд 1.1.2.0.3А бета :)



Страницы: 1 2 вся ветка

Текущий архив: 2005.01.23;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.027 c
14-1105105961
kaif
2005-01-07 16:52
2005.01.23
Много новичков! Что бы это значило?


14-1105011711
msguns
2005-01-06 14:41
2005.01.23
После-пред-праздничный штиль


1-1105362176
П7
2005-01-10 16:02
2005.01.23
String в Single без погрешностей


14-1105101564
Kerk
2005-01-07 15:39
2005.01.23
Полифонические мидяшки


1-1104849219
VitGun
2005-01-04 17:33
2005.01.23
Определение числа в строке. Возможно?