Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 11.11.2010, 20:40   #1
Новичок
 
Аватар для LAV45
 
Регистрация: 13.05.2010
Адрес: Минск
Сообщений: 13
Сказал Спасибо: 6
Имеет 0 спасибок в 0 сообщенях
LAV45 пока неопределено
По умолчанию Конкурс на самый быстрый код!

Есть функция
Delphi Код:
Function GetInt(const ss:string):integer; var i:byte; tmp:string; begin   for i := 1 to length(ss) do Insert(IntToHex(ord(ss[i]),2),tmp,i*2);   result := StrToInt('$'+tmp); end; //ss = 'cons' = #$63#0 #$6F#0 #$6E#0 #$73#0 //tmp = '636F6E73' //result = $636F6E73  

Реально ли через Move() написать ?

Последний раз редактировалось LAV45, 13.11.2010 в 01:36.
LAV45 вне форума   Ответить с цитированием
Старый 11.11.2010, 20:49   #2
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

delphi Код:
Function GetInt(const str:string):integer; var   Tmp: array[0..4] of byte absolute result; begin   move(str[1],tmp[3],1);   move(str[2],tmp[2],1);   move(str[3],tmp[1],1);   move(str[4],tmp[0],1); end;
естественно нужно учитывать что во входящей строке должно быть 4 байта (инт).
__________________
L2Ext - project closed.

Последний раз редактировалось alexteam, 11.11.2010 в 20:55.
alexteam вне форума   Ответить с цитированием
Старый 11.11.2010, 21:21   #3
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

alexteam, типа сделал то что попросили?)
LAV45, вот так будет наиболее быстро и с проверками на размер строки:
delphi Код:
function GetInt(const s: string): Integer; var   r: array[0..3] of Char absolute Result;   i, c: Integer; begin   Result := 0;   c := Length(s);   if c > 4 then c := 4;   for i := 4 - c to 3 do r[i] := s[4 - i]; end;
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился спасибкой от:
Старый 11.11.2010, 21:31   #4
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

точна, можно было "оф чар" сделать. и тупо присваивания, не вызывая функцию!
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 11.11.2010, 21:59   #5
Новичок
 
Аватар для LAV45
 
Регистрация: 13.05.2010
Адрес: Минск
Сообщений: 13
Сказал Спасибо: 6
Имеет 0 спасибок в 0 сообщенях
LAV45 пока неопределено
По умолчанию

Цитата:
Сообщение от alexteam Посмотреть сообщение
точна, можно было "оф чар" сделать. и тупо присваивания, не вызывая функцию!
Это как ? ))
xkor, с проверкой на длину строки это я погорячился, да и парядок байт менять на обратный не обязательна.

Данная функция нужна для работы со спроками используя case
Код:
str := copy(s,idx,4);
case GetInt(str) of
  ......
end;
вариант с TStringList по моему как-то жирно тут выглядит
Код:
str := copy(s,idx,4);
case tag.IndexOf(str) of
  ......
end;

initialization
  tag := TStringList.Create;
  tag.CommaText := 'трам,пам ,пам';
finalization
  tag.Free;

Последний раз редактировалось LAV45, 11.11.2010 в 22:27.
LAV45 вне форума   Ответить с цитированием
Старый 11.11.2010, 22:29   #6
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

это типо так.
delphi Код:
Function GetInt(const str:string):integer; var   Tmp: array[0..4] of char absolute result; begin   tmp[3] := srt[1];   tmp[2] := srt[2];   tmp[1] := srt[3];   tmp[0] := srt[4]; end;
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Старый 11.11.2010, 22:59   #7
Новичок
 
Аватар для LAV45
 
Регистрация: 13.05.2010
Адрес: Минск
Сообщений: 13
Сказал Спасибо: 6
Имеет 0 спасибок в 0 сообщенях
LAV45 пока неопределено
По умолчанию

Всем биг спс ))

ss то у нас #$63#0 #$6F#0 #$6E#0 #$73#0
если использывать Tmp: array[0..3] of char absolute result;
#0 остаются и на выходе получаем $63006F00

Вот так лучше будет
Код:
Function GetInt(const ss:string):integer;
var tmp: array[0..3] of byte absolute result;
begin
  tmp[3] := ord(ss[1]);
  tmp[2] := ord(ss[2]);
  tmp[1] := ord(ss[3]);
  tmp[0] := ord(ss[4]);
end;

Последний раз редактировалось LAV45, 11.11.2010 в 23:18.
LAV45 вне форума   Ответить с цитированием
Старый 12.11.2010, 12:42   #8
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

и чем оно отличаеццо ?
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 12.11.2010, 19:40   #9
Пользователь
 
Регистрация: 11.06.2009
Сообщений: 50
Сказал Спасибо: 1
Имеет 5 спасибок в 4 сообщенях
unknowned пока неопределено
По умолчанию

Цитата:
Сообщение от alexteam Посмотреть сообщение
и чем оно отличаеццо ?
Как думаешь, чем отличается в юникод системе char от байта ?
__________________
рукалицо.жпг
unknowned вне форума   Ответить с цитированием
Старый 12.11.2010, 19:59   #10
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

интересно, где ты в коде нашел файдчар\вайдстринг, чтобы такие вопросы задавать.
на входе анси строка.
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:02.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!