Форум: "Потрепаться";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];




Вниз

Так уж повелось... 


False_Delirium   (2002-01-08 05:49) [0]

Быть может попробуем привести алгоритм вычисления длины строки St ..:)... кто короче, тому и пирожок..:)

Думаю что не буду сам учавствовать ввиду того, что пирожок отберу...:)...шучу... хотя решение у меня готово..:)..



False_Delirium   (2002-01-08 05:51) [1]

Пардон, не только короче, но и производительней, эффективней.



Adder   (2002-01-08 06:22) [2]

гм... какой строки-то ? ASCIIZ, Паскалевской, AnsiString ?
Или вообще любой ?



False_Delirium   (2002-01-08 07:20) [3]

Алгоритм должен быть универсален..:)
Но сузим рамки.
...
var St : String[255] ;
...
Сойдёт.?.:)



Adder   (2002-01-08 07:25) [4]

Не сойдет ж8:Р
Но раз ты пишешь string - тогда будем жульничать. Не буду я тебе длину вычислять - я ее просто получу :-)

Для PAS-строки длина хранится в байте St[0].

Для "длинных" AnsiString:

function GetAnsiSize(const st:string):integer;
var PSize:Pointer;
begin
if pointer(st)<>nil then
begin
PSize:=pointer(integer(pointer(st))-4);
result:=integer(PSize^);
end
else result:=0;
end;



DK   (2002-01-08 07:27) [5]

Встречная атака:
Как насчёт вычисления количества разных цветов в изображении?



False_Delirium   (2002-01-08 07:33) [6]

Не порядок.:)....Жулик, млин..:)..
var
St : string[255] ;
Dl : byte absolute St ;
begin
//Dl содержит длинну St ;
end ;
Не хорошо, тогда для PChar..:)



Adder   (2002-01-08 07:41) [7]

Хи-хи... жульничаем дальше.... учтем, что Delphi автоматически переводит указатели PChar в AnsiString ж8:Р
Так что
function GetAnsiSize(const st:string):integer;
и далее по тексту...



False_Delirium   (2002-01-08 07:54) [8]

Да, действительно, не порядок..:).....никакого алгоритма, одна спецификация..:)..



Adder   (2002-01-08 07:59) [9]

А у тебя что, алгоритм, что-ли ? И работает только для ShortString ;)



False_Delirium   (2002-01-08 08:06) [10]

Это всего-лишь контревыпад был в Вашу сторону, ввиду того что Вы жульничали..:))



Adder   (2002-01-08 08:10) [11]

:)))



MBo   (2002-01-08 10:36) [12]

насчет PChar
http://www.optimalcode.com/exstrlen.htm



False_Delirium   (2002-01-09 01:49) [13]

Быстрее чем в SysUtils...но....медленнее чем вышеприведённых примерах.



Dimka Maslov   (2002-01-09 11:01) [14]

Исключительно для AnsiString:
function GetStrLen(const Str: AnsiString): Integer;
asm
test eax, eax
jz @@10
mov eax, [eax-4]
@@10:
end;




Форум: "Потрепаться";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.018 c
3-79292           Guest.                2002-01-31 12:36  2002.02.25  
Params в Query


3-79275           vopros                2002-01-31 10:30  2002.02.25  
При групперовке в QReport сумму в GroupFooter выдает не верную...


14-79457          Иван Шихалев          2002-01-08 20:05  2002.02.25  
Крик души!


6-79417           ev                    2001-12-01 18:41  2002.02.25  
Утечка памяти в Indy ?!


6-79415           [TLS]Lord             2001-12-04 20:48  2002.02.25  
Как быстро послать сообщение на e-mail из программы?