Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
3-1100598443
Explorer
2004-11-16 12:47
2004.12.12
Работа со справочниками


9-1092393665
kas-t
2004-08-13 14:41
2004.12.12
[GLScene]: Проблемы с GLFullScreenViewer


14-1101213427
pasha_golub
2004-11-23 15:37
2004.12.12
МВД: Человеческие качества


3-1100091715
denis24
2004-11-10 16:01
2004.12.12
insert into....select


14-1100851819
БареллО
2004-11-19 11:10
2004.12.12
Совместимость