Главная страница
    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.48 MB
Время: 0.28 c
4-1098889217
boban
2004-10-27 19:00
2004.12.12
Как заблокировать Print Screen ?


3-1100087235
MORA
2004-11-10 14:47
2004.12.12
переход на другой сервер БД


3-1100111086
APXi
2004-11-10 21:24
2004.12.12
Как узнать ID созданной с помощью SQL записи?


1-1101885452
vlasovv
2004-12-01 10:17
2004.12.12
gif анимация в дельфи


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