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

Вниз

array of char --> String   Найти похожие ветки 

 
Vadim S_   (2004-04-29 13:48) [0]

Как правильно перевести данные из
array of char  --> String
сейчас написано

for i:=0 to Length(C)
 do S := S + C[i];

но наверное есть способ проще?
Подскажите плиз.


 
Johnmen ©   (2004-04-29 13:49) [1]

Move


 
Андрей Сенченко ©   (2004-04-29 14:07) [2]

Johnmen ©   (29.04.04 13:49) [1]

System.pas

procedure       Move( const Source; var Dest; count : Integer );
{$IFDEF PUREPASCAL}
var
 S, D: PChar;
 I: Integer;
begin
 S := PChar(@Source);
 D := PChar(@Dest);
 if S = D then Exit;
 if Cardinal(D) > Cardinal(S) then
   for I := count-1 downto 0 do
     D[I] := S[I]
 else
   for I := 0 to count-1 do
     D[I] := S[I];
end;

В чем принципиальное отличие ?


 
Goida ©   (2004-04-29 14:15) [3]


> Vadim S_  

Если объявить массив чаров с нуля:
... :array [0..N] of char;
то он будет (должен быть) совместим с pchar. Ну а pchar совместим с string (в Delphi)


 
han_malign ©   (2004-04-29 14:21) [4]

SetString(S, C, sizeof(C));


 
Тимохов ©   (2004-04-29 14:24) [5]


> Андрей Сенченко ©   (29.04.04 14:07) [2]

в том, что purepascal не определен и move работает на asme (вы этот кусок выкинули), т.е. быстрее...


 
Goida ©   (2004-04-29 14:31) [6]

Где в вопросе о скорости. Ему нужно проще и понятнее...


 
Тимохов ©   (2004-04-29 14:35) [7]

Где в вопросе о "понятнеe"...
"Проще" же понятие растяжимое - кому проще - автору или процессору.


 
Anatoly Podgoretsky ©   (2004-04-29 14:39) [8]

А где в вопросе о скорости или о понятиях, ему как присвоить


 
Goida ©   (2004-04-29 14:42) [9]


> Vadim S_  

Ты что-нибудь пробовал из того, что здесь показали?


 
Тимохов ©   (2004-04-29 14:48) [10]

var
  s: array of char;
  ss: string;
begin
  setlength(s, 5);
  s[0] := "d";
  s[1] := "i";
  s[2] := "m";
  s[3] := "a";
  s[4] := #0;
  ss := pchar(s); /////
  showmessage(ss);
end;


 
han_malign ©   (2004-04-29 14:50) [11]

>и move работает на asme (вы этот кусок выкинули), т.е. быстрее...
- ага, а все остальное на 8-байтовом Ява-коде работает?
procedure _LStrFromPCharLen(var Dest: AnsiString; Source: PAnsiChar; Length: Integer);
asm
 { ->    EAX     pointer to dest }
 {       EDX source              }
 {       ECX length              }

       PUSH    EBX
       PUSH    ESI
       PUSH    EDI

       MOV     EBX,EAX
       MOV     ESI,EDX
       MOV     EDI,ECX

       { allocate new string }

       MOV     EAX,EDI

       CALL    _NewAnsiString
       MOV     ECX,EDI
       MOV     EDI,EAX

       TEST    ESI,ESI
       JE      @@noMove

       MOV     EDX,EAX
       MOV     EAX,ESI
       CALL    Move

       { assign the result to dest }

@@noMove:
       MOV     EAX,EBX
       CALL    _LStrClr
       MOV     [EBX],EDI

       POP     EDI
       POP     ESI
       POP     EBX
end;


 
Тимохов ©   (2004-04-29 14:51) [12]


> - ага, а все остальное на 8-байтовом Ява-коде работает?

и к чему это?


 
Андрей Сенченко ©   (2004-04-29 14:52) [13]

Тимохов ©   (29.04.04 14:24) [5]

(вы этот кусок выкинули), т.е. быстрее...

сначала запостил, потом только увидел {$ELSE}



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.041 c
3-1082439362
Wild_arg
2004-04-20 09:36
2004.05.16
try...except...end в T-SQL


3-1082098026
чайник_
2004-04-16 10:47
2004.05.16
Обновление DBGrid автоматом


9-1071510959
Yaroslav
2003-12-15 20:55
2004.05.16
С чего начать??? Нужно сделать игрушку.


1-1083245971
Шнур
2004-04-29 17:39
2004.05.16
Округление


4-1080239386
Константин
2004-03-25 21:29
2004.05.16
Как запустить из процесса другую программу?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский