IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Функции работы со строками
сообщение
Сообщение #1


Adminь
****

Группа: Пользователи
Сообщений: 803
Пол: Мужской
Реальное имя: Евгений

Репутация: -  5  +


Однажды пытался в Delphi найти функции обработки и разбора строк, но ничего не нашёл  :(
По ходу действий стал писать свои и собрал уже некоторое количество функции, так вот предлагаю оставить здесь всё что было написано вами для собственных целей для сбора модуля для работы со строками...

А вот что получилось у меня:

//  Функции для работы с ini файлами и для разбора строк
// Проверка строки на содержание данных (ini file)
function TestStr(Str: string): Boolean;
// Проверка строки на наличие коментария (ini file)
function TestCommentStr(Str: string): Boolean;
// Извлекает строку до символа #13(#10) и вырезает её из основной строки (Str)
function ExtractStr(var Str: string; AutoTrim: Boolean = False; Ex: Boolean = False): string;
// Извлекает строку до разделителя Sep и вырезает её из основной строки (Str)
function ExtractStrSep(Sep: string; var Str: string; Ex: Boolean = False): string;
// Извлекает параметр ParName из списка строк Str и помещает его в ParStr, в случае неудачи возвращает False (ini file)
function ExtractValue(Str, ParName: string; var ParStr: string): Boolean;
// Преобразует масив в виде строки в масив Delphi
function ExtractMasToStaticArray(Source: string; var Dest: array of string): Boolean;
// Преобразует масив Delphi в масив Delphi в виде строки
function InvolvingStaticArrayToMas(var Dest: string; Source: array of string): Boolean;
// Преобразует масив в виде строки в список строк разделённых #13#10
function ExtractMasToStr(Source: string; var Dest: string): Boolean;
// Преобразует список строк разделённых #13#10 в масив в виде строки
function InvolvingStrToMas(Source: string; var Dest: string): Boolean;
// Похоже на ExtractStr, но с дополнительными возможностями (ini file)
function NextInfStr(var Str, ExtStr: string; NillStop: Boolean = False): Boolean;
// Ну тут вроде так будет ясно
function ReplaceStr(FindStr, ReplStr, EventStr: string; IgnoreCase: Boolean = False): string;
// Упаковывает строку в безопасную строку (%**)
function StrPak(Str: string; CharPak: string = ''; CharNoPak: string = ''): string;
// Распаковывает строку из безопасной строки (%**)
function StrUnPak(Str: string): string;

//  Функции для работы со списками строк
function StrAddLine(AddStr: string; var Str: string): Boolean;
function StrInsLine(AddStr: string; var Str: string; Index: Integer): Boolean;
function StrDelLine(var Str: string; Index: Integer): Boolean;
function StrMoveLine(var Str: string; FromLine, ToLine: Integer): Boolean;
function StrGetLine(Str: string; Index: Integer): string;
function StrSetLine(NewStr: string; var Str: string; Index: Integer): Boolean;
function StrFindLine(FindStr, Str: string; Start: Integer; IgnoreCase: Boolean = False): Integer;
function StrFindBeginLine(Str: string; Index: Integer; Start: Integer = 1): Integer;
function StrLenLine(Str: string; Start: Integer): Integer;
function StrCountLine(Str: string): Integer;

//  Функции преоразования
function IntToHex(Value: Integer; MinDigits: Byte = 2; MaxDigits: Byte = 8): string;
function HexToInt(Value: string; Def: Integer = 0): Integer;
function HexToIntDef(Value: string; var PosErr: Integer; Def: Integer = 0): Integer;
function NextWord(var Value: string; Splin: string = #32): string;
function StrToColor(Str: string): TColor;
// Просто возвращает параметр Value
function toconst(Value: string): string;
// "Фамилию Имя Отчество" преобразует в "Фамилия И О"
function FIOToShortFIO(Value: string): string;
// Преобразует строку формата С в формат Delphi (преобразуются t r n и т.д.)
function CtoPasStr(S: PChar): string;
// Генерирует случайный пароль
function GeneratePassword(Size: Byte = 8; Chars: string = 'abcdefghijklmonqrstuvwxyz'): string;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Adminь
****

Группа: Пользователи
Сообщений: 803
Пол: Мужской
Реальное имя: Евгений

Репутация: -  5  +


Цитата
function ReplaceStr(FindStr, ReplStr, EventStr: string; IgnoreCase: Boolean = False): string;

Есть стандартная функция  - StringReplace


Может быть...

Цитата
function StrInsLine(AddStr: string; var Str: string; Index: Integer): Boolean;

Есть стандартная функция  - Insert

Ну есть Insert и что из этого?
Функция Insert вставляет одну строку в другую, а мои функции как там ясно написано работают со списками строк разделённых сивлолами #13, #10.
Цитата
function StrDelLine(var Str: string; Index: Integer): Boolean;

Есть стандартная функция  - Delete

function StrFindLine(FindStr, Str: string; Start: Integer; IgnoreCase: Boolean = False): Integer;

Есть стандартные функции  - Pos, AnsiPos и т.п.

Тоже самое

Цитата
//  Функции преоразования
function IntToHex(Value: Integer; MinDigits: Byte = 2; MaxDigits: Byte = 8): string;
function HexToInt(Value: string; Def: Integer = 0): Integer;

Есть стандартные одноимённые функции IntToHex, HexToInt

Если программа пишется без VCL то эти функции пригодятся

Цитата
function StrToColor(Str: string): TColor;
// Просто возвращает параметр Value

А RTTI нельзя использовать?

Многие написанные мною функцию имеют одноимённые функции так как многие мои функции только корректируют работу стандартных и в нутри происходит обращение к стандартным функцим. Приведу примеры:

Код
function StrToColor(Str: string): TColor;
begin
 if Str='' then
 begin
   Result := 0;
   Exit;
 end;
 if Str[1]='#' then
   Str[1] := '$';
 if not IdentToColor(Str, Longint(Result)) and
   not IdentToColor('cl'+Str, Longint(Result)) then
     Result := TColor(StrToInt(Str));
end;

function StrAddLine(AddStr: string; var Str: string): Boolean;
var
 L: Integer;
begin
 Result := Pos(#13, AddStr)=0;
 if Result then
 begin
   L := Length(Str);
   if (L>0) and (Str[L]<>#13) and ((L=1) or (Str[L]<>#10) or (Str[L-1]<>#13)) then
     Str := Str+#13#10;
   Str := Str+AddStr+#13#10;
 end;
end;

function StrInsLine(AddStr: string; var Str: string; Index: Integer): Boolean;
var
 P: Integer;
begin
 P := StrFindBeginLine(Str, Index);
 if P<=0 then
   Str := Str+AddStr+#13#10
 else
   Insert(AddStr+#13#10, Str, P);
 Result := True;
end;

function StrDelLine(var Str: string; Index: Integer): Boolean;
var
 P, L: Integer;
begin
 P := StrFindBeginLine(Str, Index);
 Result := P>0;
 if not Result then Exit;
 L := StrFindBeginLine(Str, 1, P);
 if L>0 then
   Delete(Str, P, L-P)
 else
   Setlength(Str, P-1);
 Result := True;
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.06.2024 2:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name