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