Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-1100185653
gedd
2004-11-11 18:07
2004.12.12
Поместить файл в базу данных


1-1101728709
Bobby Digital
2004-11-29 14:45
2004.12.12
Combo


6-1096714960
Felixxxxx
2004-10-02 15:02
2004.12.12
Как в локальной сети организовать связь


1-1101817874
Erik1
2004-11-30 15:31
2004.12.12
Как отправить сообщение всем активным формам, одного класса?


4-1099167279
MaxDDinc
2004-10-31 00:14
2004.12.12
Изменить системное время





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский