Форум: "KOL";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизВладимиру Кладову... Найти похожие ветки
← →
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 вся ветка
Форум: "KOL";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.068 c