![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
чем заменить s:=chr(1)+chr(1).....+chr(1) [D7, WinXP]
lena19 © (2004-06-14 23:48:00)всем привет
народ с помощью какой функции или процедуру можно в строчную переменную загнать некоторое колличество одинаковых символов
Fay (2004-06-15 00:58:00) [1]2default © (15.06.04 00:36) [29]
Я уже проверил. Всё отлично. А когда-то я убил кучу времени на борьбу с такой ошибкой! 8(
Ладно, работает - хорошо. Видать, нет больше таких траблов...
KilkennyCat (2004-06-15 00:46:00) [2]
> lena19 (15.06.04 00:37) [30]
> етот результат получен на процессоре amd 2500+
> Special4u = 234, StrOfChar = 172, DupeStr = 1141, FillString
> = 125
>
> кто меньше :-))
а у меня все еще считает.... :(
придется отказаться от икстихи...
GuAV (2004-06-15 00:39:00) [3]
> Получится - покажу.
Имхо не получится, и вот почему:
"Delphi syntax:
procedure SetLength(var S; NewLength: Integer);
Description
...
Following a call to SetLength, S is guaranteed to reference a uniquestringor array—that is, a string or array with a reference count of one. If there is not enough memory available to reallocate the variable, SetLength raises an EOutOfMemory exception. "
Процедура FillChar - не поменяет это, т.е. останится уникально реферированная строка. по этому вопросу тж RTFM UniqueString.
> Если склероз мне не изменяет,
LOL
lena19 (2004-06-15 00:37:00) [4]етот результат получен на процессоре amd 2500+
Special4u = 234, StrOfChar = 172, DupeStr = 1141, FillString = 125
кто меньше :-))
default (2004-06-15 00:36:00) [5]Fay © (15.06.04 00:32) [28]
какие ссылки? FillChar выполняет банальное копирование в выделенную память, с такого же макара можно сказать и про [1]
просто FillChar лучше поскольку [12]
Fay (2004-06-15 00:32:00) [6]Если склероз мне не изменяет, можно получить ошибку, и связано это с количеством ссылок на строку. Сейчас попробую сгенерить трабл. Получится - покажу.
lena19 (2004-06-15 00:30:00) [7]Special4u = 234, StrOfChar = 172, DupeStr = 1141, FillString = 125
GuAV (2004-06-15 00:29:00) [8]
> FillChar(Str[1], Len, Ch) - так лучше не делать
Это про то, что с WideString не пойдёт - ? Или почему ?
Fay (2004-06-15 00:26:00) [9]FillChar(Str[1], Len, Ch) - так лучше не делать
lena19 (2004-06-15 00:22:00) [10]to fay
если имеется в виду функция то я её и состряпала на цикле .
а потом решила упростить код
GuAV (2004-06-15 00:21:00) [11]
procedure Special4u(var s : string; c : Char; n : Integer);
var
i : Integer;
begin
SetLength(s, n);
for i := 1 to n do s[i] := c;
end;
procedure StrOfChar(var s : string; c : Char; n : Integer);
begin
s:=System.StringOfChar(c, n);
end;
procedure DupeStr(var s : string; c : Char; n : Integer);
begin
s:=StrUtils.DupeString(c ,n);
end;
procedure FillString(var Str: String; Ch: Char; Len: Integer);
begin
SetLength(Str, Len);
FillChar(Str[1], Len, Ch)
end;
procedure TForm1.Button1Click(Sender: TObject);
const
N = 1000000; m=21;
fn = 'c:\ fifhed\fhkldj\coc3fe9.lsafs';
var
tSpecial4u, tStrOfChar, tDupeStr, tFillString: Cardinal;
i: Integer;
s: string;
begin
tSpecial4u := GetTickCount;
for i := 0 to N do
Special4u(s,'L',m);
tSpecial4u := GetTickCount - tSpecial4u;
Memo1.Lines.Add(s); s:='';
tStrOfChar := GetTickCount;
for i := 0 to N do
StrOfChar(s,'L',m);
tStrOfChar := GetTickCount - tStrOfChar;
Memo1.Lines.Add(s); s:='';
tDupeStr := GetTickCount;
for i := 0 to N do
DupeStr(s,'L',m);
tDupeStr := GetTickCount - tDupeStr;
Memo1.Lines.Add(s); s:='';
tFillString := GetTickCount;
for i := 0 to N do
FillString(s,'L',m);
tFillString := GetTickCount - tFillString;
Memo1.Lines.Add(s); s:='';
Caption := Format('Special4u = %d, StrOfChar = %d, DupeStr = %d, FillString = %d',
[tSpecial4u, tStrOfChar, tDupeStr, tFillString]);
// Special4u = 249, StrOfChar = 245, DupeStr = 2800, FillString = 150
end;
Fay (2004-06-15 00:18:00) [12]2lena19 (15.06.04 00:14) [19]
Могла бы и сама состряпать.
Помню, меня сестрёнка спросила - "как в C называется функция факториала?"... 8)
KilkennyCat (2004-06-15 00:17:00) [13]
> Fay © (15.06.04 00:15) [20]
Йамдукс - разрушим все!
Fay (2004-06-15 00:15:00) [14]2KilkennyCat © (15.06.04 00:14) [18]
Нерушимый, надо полагать?
Fay (2004-06-15 00:14:00) [15]2KilkennyCat © (15.06.04 00:10) [14]
Дата рождения: 25.08.1987Не должен был школу-то забыть... 8^)
lena19 (2004-06-15 00:14:00) [16]StringOfChar ето то, что надо.
KilkennyCat (2004-06-15 00:14:00) [17]
> Fay © (15.06.04 00:12) [16]
ага. это союз.
Fay (2004-06-15 00:12:00) [18]В Word проверял? Так вот "длинна" - не имя существительное. 8)
default (2004-06-15 00:12:00) [19]KilkennyCat © (15.06.04 00:10) [14]
да ну ничё прикольного
KilkennyCat (2004-06-15 00:10:00) [20]
> Fay © (15.06.04 00:05) [11]
можешь еще поколбаситься: http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1086996474