Работа со строками
Code: |
const HKEYNames: array[0..6] ofstring = ('HKEY_CLASSES_ROOT', 'HKEY_CURRENT_USER', 'HKEY_LOCAL_MACHINE', 'HKEY_USERS', 'HKEY_PERFORMANCE_DATA', 'HKEY_CURRENT_CONFIG', 'HKEY_DYN_DATA');
function StrToHKEY(const KEY: string): HKEY; var i: Byte; begin Result := $0; for i := Low(HKEYNames) to High(HKEYNames) do begin if SameText(HKEYNames[i], KEY) then Result := HKEY_CLASSES_ROOT + i; end; end; |
Взято с сайтаhttps://www.swissdelphicenter.ch/en/tipsindex
- Подробности
- Родительская категория: Работа со строками
- Категория: Преобразования строк из и в другие типы
Code: |
Var S: String; P: PChar;
....
P:=PChar(S); |
Взято изhttps://forum.sources
Все функции API для работы с текстом используют неудобный тип String, а PChar – быстрее. Преобразовать строку String в PChar очень просто: PChar('It is my string'). Можно использовать то, что PChar – это адрес персого символа строки, заканчивающейся символом #0. И, наконец, еще одно удобство. Delphi воспринимает массив типа Char и как обычную строку, и как строку PChar. Полная совместимость. Эта программа демонстрирует демонстрирует все это.
Code: |
procedure TForm1.Button1Click(Sender: TObject); var s: array [0..99] of char; p: integer; begin s := 'Delphi World'; FindWindow(nil, s); p := pos('lp', s); Form1.Caption := copy(s, p, Length(s) - p); end;
|
https://delphiworld.narod
- Подробности
- Родительская категория: Работа со строками
- Категория: Преобразования строк из и в другие типы
Code: |
{ **** UBPFD *********** by delphibase.endimus **** >> Преобразование строки с разделителями в StringList.
Преобразование строки с разделителями в StringList или наследник TStrings. Навеяно одноименной процедурой из InfoPower :-)
Зависимости: Classes Автор: Игорь Шевченко, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., Москва Copyright: Игорь Шевченко, Woll2Woll software (original) Дата: 30 апреля 2002 г. ***************************************************** }
procedure StrBreakApart(const S, Delimeter: string; Parts: TStrings); var CurPos: integer; CurStr: string; begin Parts.clear; Parts.BeginUpdate(); try CurStr := S; repeat CurPos := Pos(Delimeter, CurStr); if (CurPos > 0) then begin Parts.Add(Copy(CurStr, 1, Pred(CurPos))); CurStr := Copy(CurStr, CurPos + Length(Delimeter), Length(CurStr) - CurPos - Length(Delimeter) + 1); end else Parts.Add(CurStr); until CurPos = 0; finally Parts.EndUpdate(); end; end; Пример использования:
var Tmp: StringList; begin Tmp := TStringList.Create(); StrBreakApart('Text1<BR>Text2<BR>Text3<BR>Text4', '<BR>', Tmp); // После вызова Tmp содержит // Text1 // Text2 // Text3 // Text4 ... Tmp.Free(); end; |
Можно сделать значительно проще:
Code: |
procedure StrBreakApart(const S, Delimeter: string; Parts: TStrings); {©Drkb v.3(2007): www.drkb.ru, ®Vit (Vitaly Nevzorov) - Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.} begin Parts.text:=StringReplace(S, Delimeter, #13#10, [rfReplaceAll, rfIgnoreCase]); end; |
Автор:Vit
- Подробности
- Родительская категория: Работа со строками
- Категория: Преобразования строк из и в другие типы
Code: |
{ **** UBPFD *********** by kladovka.net.ru **** >> Конвертация String в PWideChar
Зависимости: ??? Автор: Gua, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., ICQ:141585495, Simferopol Copyright: Andre .v.d. Merwe Дата: 18 июля 2002 г. ********************************************** }
function StringToPWide( sStr: string; var iNewSize: integer ): PWideChar; var pw : PWideChar; iSize : integer; begin iSize := Length( sStr ) + 1; iNewSize := iSize * 2;
pw := AllocMem( iNewSize );
MultiByteToWideChar( CP_ACP, 0, PChar(sStr), iSize, pw, iNewSize );
Result := pw; end; |
Пример использования:
Code: |
procedure TForm1.Button1Click(Sender: TObject); var iSize: integer; begin ChangeWallpaper(StringToPWide('C:\1.jpg',iSize)); end; |
- Подробности
- Родительская категория: Работа со строками
- Категория: Преобразования строк из и в другие типы
Code: |
{:Converts Ansi string to Unicode string using specified code page. @param s Ansi string. @param codePage Code page to be used in conversion. @returns Converted wide string. } function StringToWideString(const s: AnsiString; codePage: Word): WideString; var l: integer; begin if s = ''then Result := '' else begin l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), - 1, nil, 0); SetLength(Result, l - 1); if l > 1then MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]), - 1, PWideChar(@Result[1]), l - 1); end; end; { StringToWideString } |
Взято с сайтаhttps://www.swissdelphicenter.ch/en/tipsindex
- Подробности
- Родительская категория: Работа со строками
- Категория: Преобразования строк из и в другие типы
Страница 8 из 21