Главная страница
    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.035 c
14-1100666946
Megabyte-CeerCop
2004-11-17 07:49
2004.12.12
Потерял ветку про ламаразмы, а спостить нужно.


1-1101354943
Кто---то
2004-11-25 06:55
2004.12.12
Как проще обменять шрифты двух комбобоксов ?


14-1101112728
Александр Иванов
2004-11-22 11:38
2004.12.12
Бросаю курить


9-1092668631
_YoungDelphin_
2004-08-16 19:03
2004.12.12
Помогите со спрайтами!


4-1099148447
Zq
2004-10-30 19:00
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский