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

Вниз

Несоответствие в TrimLeft   Найти похожие ветки 

 
AndrewA ©   (2003-09-18 09:03) [0]

Функция TirmLeft в паскалевской и ассемблерной версии работают по разному, если в начале строки присутствует символ с кодом 0. Паскалевский вариант считает этот символ пробельным и нормально удалает, ассемблерный же вариант считает этот символ концом строки и, соответственно, возвращает пустую строку. Можно ли все привести к работе, как в паскалевском варианте?


 
FoxBox   (2003-09-18 10:04) [1]

Знаешь, чем отличается тип pChar от String? Вот поэтому ассемблер и не может ничего сделать... Фактически, ассемблер и паскаль работают с разными типами. В случае pChar концом строки служит "0" в строке. В Sting длина строки определяется с помощью 1 - 2 байт (в зависимости от компилятора) в начале строки. Поэтому если ты работаешь с ASM-вставками, пробегись по строке и исключи символы: ord(mystring[i]) = 0


 
AndrewA ©   (2003-09-18 16:29) [2]

Может быть я не совсем точно выразился, но я имел ввиду функцию TrimLeft в библиотеке KOL, именно в ней есть такие проблемы.

А то, что "ассемблер не может ничего сделать", это несколько преувеличен :) Здесь проблемы именно в алгоритме, TrimRigth, например, работает с такими строками корректно.


 
Gandalf ©   (2003-09-18 20:17) [3]

Код в пример приведи.


 
AndrewA ©   (2003-09-19 08:32) [4]

Вот этот код выводит разный текст в паскалевской и ассемблерной версии.


program test;

{$apptype console}

uses
 Kol;

var
 str1: String;

begin
 str1 := "  Test  ";
 str1[1] := #0;
 WriteLn(""" + str1 + """);
 WriteLn(""" + TrimLeft(str1) + """);
end.


 
miek ©   (2003-09-19 20:08) [5]

Эта проблема во всех (вроде) строковых KOL-функциях. Для обычных паскалевких строк использован код для ASCIIZ. Кладов говорил, что-де это не бага, а фича и исправлять он ее не намерен.
В конце концов, недолго же и самому руками сделать.



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

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

Наверх




Память: 0.47 MB
Время: 0.03 c
3-1080563703
Bless
2004-03-29 16:35
2004.04.25
Как прервать асинхронное выпосление запроса, который возвращает д


8-1074505092
vantage10
2004-01-19 12:38
2004.04.25
TImage отображение Jpeg


1-1081120749
Broot
2004-04-05 03:19
2004.04.25
Генерация кривой


3-1080557970
Piarte
2004-03-29 14:59
2004.04.25
Backup заданных таблиц


6-1078079135
LAndreyL
2004-02-29 21:25
2004.04.25
есть ли в Delphi7 аналог TNMHttp из Delphi5?