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

Вниз

Владимиру Кладову...   Найти похожие ветки 

 
Dimaxx ©   (2003-07-31 23:30) [0]

Сейчас столкнулся с проблемой ассемблерных функций Trim. Ни одна не работает, если строка символов окружена не пробелами, а нулевыми символами. Возвращает пустую строку. Паскалевская работает на "ура", а ассемблерная - нет. Не мешает поправить бы... ;-)


 
miek ©   (2003-08-01 08:49) [1]

И это не только для Trim, кстати говоря. А дело в том, что в них используется код для ASCIIZ-строк.


 
Gandalf ©   (2003-08-04 14:14) [2]

StrReplace не пашет если дать ей пустую строку - вылетает.
Можно добавить в Int2Hex - Си формат (0x...) - добавить проверку на ворой знак и смещать индекс на 2 (ведь проверка на $ есть) - мне бонадобилось.
Может ввести функцию Int2Oct?

Код исправленый Int2Hex и Int2Oct - могу выслать.


 
Кладов   (2003-08-04 19:40) [3]

Может, все-таки Hex2Int, Int2Hex ничего не должен анализировать, у него на входе число. Hex2Int лучше не трогать. Можно сделать cHex2Int, который еще и на ведущий 0x проанализирует. Насчет Trim"а я тоже не согласен. Во многих случаях хватает trim"а для asciz, а не для asciz можно использовать альтернативный или по-другому названный. Я против изменения функциональности существующих функций и методов, если это не исправление ошибки. Могу согласиться, если изменение не увеличивает размер кода, и не нужно после этого вносить изменения в тех проектах, где эти функции/методы были использованы.


 
Dimaxx ©   (2003-08-04 23:27) [4]

А как тогда обрезать нулевые символы в строке, если ничего не править? Вот тут-то и добавляем свой лишний код. 8-( Так какая разница - в KOL добавить или каждый будет городить свои версии замены нулей на пробелы, а потом их триммингование? А так была бы полная функциональность. И добавлять ничего не пришлось бы.
Иначе к переносу с VCL на KOL будет добавлено самостоятельное исправление таких вот мелких неприятностей. ;-) Сначала это, потом другое обнаружится...

PS: В ассемблерной части добавить-то всего-ничего: дополнительную команду сравнения. :-)


 
Gandalf ©   (2003-08-05 09:31) [5]

> Может, все-таки Hex2Int, Int2Hex ничего не должен анализировать,
> у него на входе число. Hex2Int лучше не трогать.


Да конечно, соответсвенно Oct2Int - можно и Bin2Int - он мне лично не нужен но они настолько легко клепаются из Hex2Int что грех не сделать.

function Hex2Int( const Value : String) : Integer;
var I : Integer;
begin
Result := 0;
I := 1;
if Value = "" then Exit;
if Value[ 1 ] = "$" then Inc( I );
// C form support
if Value[ 2 ] = "x" then  I:=3;
while I <= Length( Value ) do
begin
  if Value[ I ] in [ "0".."9" ] then
     Result := (Result shl 4) or (Ord(Value[I]) - Ord("0"))
  else
  if Value[ I ] in [ "A".."F" ] then
     Result := (Result shl 4) or (Ord(Value[I]) - Ord("A") + 10)
  else
  if Value[ I ] in [ "a".."f" ] then
     Result := (Result shl 4) or (Ord(Value[I]) - Ord("a") + 10)
  else
    break;
  Inc( I );
end;
end;

function Oct2Int( const Value : String) : Integer;
var I : Integer;
begin
Result := 0;
I := 1;
if Value = "" then Exit;
while I <= Length( Value ) do
begin
  if Value[ I ] in [ "0".."8" ] then
    Result := (Result shl 3) or (Ord(Value[I]) - Ord("0"))
  else
    break;
  Inc( I );
end;
end;

function Bin2Int( const Value : String) : Integer;
var I : Integer;
begin
Result := 0;
I := 1;
if Value = "" then Exit;
while I <= Length( Value ) do
begin
  if Value[ I ] in [ "0".."1" ] then
    Result := (Result shl 1) or (Ord(Value[I]) - Ord("0"))
  else
    break;
  Inc( I );
end;
end;

Насчет StrReplace - пардон, теперь не могу добится эффекта вылетания, видимо померещилось. (Или дело было в Parse?)



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
1-1080123367
аппельсин
2004-03-24 13:16
2004.04.11
запрос к дереву


14-1082112857
juiceman
2004-04-16 14:54
2004.04.11
Использование Debug API - исходники


4-1079373919
Константин
2004-03-15 21:05
2004.04.11
Замена названия окна программы


6-1075643670
stimm
2004-02-01 16:54
2004.04.11
Пишу программу Анти-Интернет для братишки :)


14-1079354262
Карелин Артем
2004-03-15 15:37
2004.04.11
Блок-схема по ГОСТу