Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.46 MB
Время: 0.039 c
7-1075315657
X-file_
2004-01-28 21:47
2004.04.11
разделитель дробной части числа


3-1081437543
jenbond
2004-04-08 19:19
2004.04.11
Присвоить полю значение NULL


1-1080105759
Folder
2004-03-24 08:22
2004.04.11
Как программно удалить папку?


4-1075607631
Clift
2004-02-01 06:53
2004.04.11
Индикатор языка


14-1079423649
Gorlum
2004-03-16 10:54
2004.04.11
Помогите настроить





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