Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизPChar TO String Найти похожие ветки
← →
Davinchi © (2004-11-29 20:42) [0]Господа, наверное глупый вопрос, но как корректно перевести Buffer: Array[0..255] of Char в Str: String, при этом выкинуть все переводы строк и пустые символы или "кракозябры", которые нормально не отображаются.... Я имею ввиду какую нибудь стандартную функцию, если таковой нет, то я сам это могу сделать, прото времени нет писать ее самому...
Заранее благодарен!!!
← →
NE_Mashinist (2004-11-29 20:57) [1]Не слышал стандартной, думаю что нет!
← →
Davinchi © (2004-11-29 21:01) [2]а че делает StrPas??? ни это ли случайно
← →
begin...end © (2004-11-29 21:59) [3]> Davinchi © (29.11.04 20:42)
> как корректно перевести Buffer: Array[0..255] of Char в
> Str: String
Str := String(Buffer) не подойдёт?
← →
Davinchi © (2004-11-29 22:04) [4]не идет по той причене, что присутствуют переводы строк и еще всякие спец символы. К стати, StrPas делает то же самое... А кок получить строку без всякого мусора???
← →
begin...end © (2004-11-29 22:08) [5]> [4] Davinchi © (29.11.04 22:04)
Что-то не вижу никакого решения, кроме пробега по массиву и прибавления / неприбавления очередного символа к Str в зависимости от того, считается ли этот символ мусором или нет...
← →
begin...end © (2004-11-29 22:12) [6]> Davinchi
P.S. Надеюсь, Вы понимаете, что если я этого решения не вижу, то это не означает, что его нет... :-) Подождите, может кто чего подскажет...
← →
GanibalLector © (2004-11-29 23:03) [7]begin...end предложил в [3] правильно,а то что там переводы строк...это ничего.Лишь бы chr(0) не было
← →
GuAV © (2004-11-29 23:25) [8]2 GanibalLector
SetString(Str, Buffer, 256);
- и Chr(0) не страшен.
А по теме - согасен с begin...end © (29.11.04 22:08) [5]. Только лучше прибавлять не S:=S+Ch, а S[I]:=Ch, предварительно установив длину S в максимум, а потом скоректировав длину.
← →
GanibalLector © (2004-11-29 23:32) [9]2 GuAV © [8]
> предварительно установив длину S в максимум, а потом скоректировав длину.
Начитался статей http://www.delphimaster.ru/articles/dyntable/index.html ???
← →
GuAV © (2004-11-29 23:57) [10]
var A: array[0..255] of Char =
"0123456789ABCDEF0123456789ABCDEF"+
"0123456789ABCDEF0123456789ABCDEF"+
"0123456789ABCDEF0123456789ABCDEF"+
"0123456789ABCDEF0123456789ABCDEF"+
"0123456789ABCDEF0123456789ABCDEF"+
"0123456789ABCDEF0123456789ABCDEF"+
"0123456789ABCDEF0123456789ABCDEF"+
"0123456789ABCDEF0123456789ABCDEF";
function Concatenation: string;
var I: Integer;
begin
Result := "";
for I := Low(A) to High(A) do
if A[I] in ["0".."9"] then
Result := Result + A[I];
end;
function DirectAssignment: string;
var I, J: Integer;
begin
J:=0;
SetLength(Result, High(A) - Low(A));
for I := Low(A) to High(A) do
if A[I] in ["0".."9"] then
begin
Inc(J);
Result[J] := A[I];
end;
SetLength(Result, J);
end;
procedure TForm1.Button1Click(Sender: TObject);
const
TestCount = 10000;
var
A, B: Cardinal;
i: Integer; i1, i2 : tcolor;
begin
Assert(Concatenation = DirectAssignment);
A := GetTickCount;
for i := 0 to TestCount do Concatenation;
A := GetTickCount - A;
B := GetTickCount;
for i := 0 to TestCount do DirectAssignment;
B := GetTickCount - B;
Caption := Format("Concatenation = %d"+
", DirectAssignment = %d", [A, B]);
end;
← →
GuAV © (2004-11-29 23:57) [11]Concatenation = 935, DirectAssignment = 21
← →
GanibalLector © (2004-11-30 00:01) [12]2 GuAV [11]
Это и так понятно ;)
← →
GrayFace © (2004-11-30 05:57) [13]GuAV © (29.11.04 23:57) [10]
SetLength(Result, High(A) - Low(A));
SetLength(Result, High(A) - Low(A) + 1);
GuAV © (29.11.04 23:57) [11]
Че значат эти цифры?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c