Главная страница
    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.038 c
1-1101368240
markers
2004-11-25 10:37
2004.12.12
Работа с чексбоксами....


9-1091707720
SwitchBlade
2004-08-05 16:08
2004.12.12
Есть ли DelphiX для Delphi 8?


3-1100178736
Layner
2004-11-11 16:12
2004.12.12
Люди добрые, поможите вставить аппостоф в SQL таблицу.


1-1101718296
Oyster
2004-11-29 11:51
2004.12.12
Проблемы с кучей в BP


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