Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#1: 2017-04-28 19:47:20 ЛС | профиль | цитата
Сегодня наступил


Add(MainForm,2953706,105,105)
{
Width=172
Height=116
}
Add(Button,6625603,147,105)
{
Left=10
Top=5
Caption="123"
Data=String(123)
link(onClick,13096746:doEvent,[])
}
Add(Button,15174905,147,154)
{
Left=10
Top=45
Caption=" 123"
Data=String( 123)
link(onClick,7079734:doEvent,[])
}
Add(Math,12691931,210,154)
{
Op2=1
link(onResult,653158:doText,[])
}
Add(Math,10066747,210,105)
{
Op2=1
link(onResult,13521503:doText,[])
}
Add(Label,13521503,259,105)
{
Left=85
Top=10
}
Add(Label,653158,259,154)
{
Left=85
Top=45
}
Add(Debug,13096746,189,105)
{
link(onEvent,10066747:doOperation,[])
}
Add(Debug,7079734,189,154)
{
link(onEvent,12691931:doOperation,[])
}

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
vip
#1.1контекстная реклама от партнеров
Ответов: 817
Рейтинг: 52
#2: 2017-04-30 21:25:34 ЛС | профиль | цитата
Tad, А мне кажется все очень логично
Math работает с Integer, ты же подсовываешь string, это уже не верно
Если String сменить на Integer, то значение с пробелом впереди, автоматом становится нулем.
Все логично или я тебя не понял?
карма: 1

0
Ответов: 165
Рейтинг: 6
#3: 2017-04-30 22:24:31 ЛС | профиль | цитата
-= DriveR =-, логично-то да, но он мог просто не видеть пробела
карма: 4

0
Ответов: 16884
Рейтинг: 1239
#4: 2017-04-30 23:31:12 ЛС | профиль | цитата
Nickname писал(а):
но он мог просто не видеть пробела

Это вылезло в готовой программе - просто новая девочка-оператор имеет привычку ввод начинать с пробела.

Add(Edit,5473322,91,105)
{
Left=165
Top=55
link(onEnter,7260478:doConvert,[])
}
Add(Edit,5119407,224,112)
{
Left=270
Top=60
}
Add(Convertor,7260478,154,112)
{
Mode=10
link(onResult,5119407:doText,[])
}

т.е. Convertor, раз String To Число (Double или Integer), должен удалять пробелы с обеих сторон.
nesco, как думаешь, может подкорректируем Convertor-a ?

Редактировалось 4 раз(а), последний 2017-04-30 23:44:38
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#5: 2017-05-01 00:12:17 ЛС | профиль | цитата
Tad писал(а):
как думаешь, может подкорректируем Convertor-a ?

Я вообще не понял смысл темы, у меня прекрасно твой пример преобразует строку в число с кучей пробелов в начале. И первый пример тоже прекрасно суммирует единицу. Че набрать-то надо, чтобы увидеть ошибку?
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#6: 2017-05-01 08:02:04 ЛС | профиль | цитата
Схема

Add(MainForm,2953706,98,112)
{
Width=173
Height=116
BorderStyle=1
Position=1
}
Add(Edit,5473322,147,112)
{
Left=10
Top=10
TabOrder=1
Text=" 123"
ClearAfterEnter=1
link(onEnter,7260478:doConvert,[])
}
Add(Edit,5119407,231,119)
{
Left=85
Top=10
TabOrder=-1
Text=""
}
Add(Convertor,7260478,189,119)
{
Mode=10
link(onResult,5119407:doText,[])
}
Add(Edit,529902,147,168)
{
Left=10
Top=50
TabOrder=2
Text=" 123"
ClearAfterEnter=1
link(onEnter,391494:doConvert,[])
}
Add(Edit,1054332,231,175)
{
Left=85
Top=50
TabOrder=-1
Text=""
}
Add(ConvertorEx,391494,189,175)
{
Mode=10
link(onResult,1054332:doText,[])
}

Delphi4, FPC
Работает правильно при компиляции с Delphi7.
Delphi4 и FPC - бред какой-то.

Редактировалось 3 раз(а), последний 2017-05-01 10:11:31
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#7: 2017-05-01 08:54:03 ЛС | профиль | цитата
Tad писал(а):
Работает правильно при компиляции с Delphi7.

Когда-то давно, когда я еще не знал, что Tad-а в большей степени интересует процесс, нежели результат -- я повелся на эту бодягу.
Кажется, речь шла о независимости результата копирования текста с контролов под Delphi7, от раскладки клавиатуры...
И даже устанавливал, нафиг мне ненужный, Delphi7.

Сегодня устанавливать не буду, а скажу проще: уважаемый Tad, не врите

Редактировалось 1 раз(а), последний 2017-05-01 08:54:54
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#8: 2017-05-01 09:25:31 ЛС | профиль | цитата
Galkov писал(а):
не врите
Это про что? Про то, что в Delphi 7 работает? Невероятно, но факт. Сам в шоке.
Delphi 7
Функция Str2Double() из Kol. Комментарии мои.

function Str2Double( const S: String ): Double; // я подал строку "  -123" - два пробела минус 123
var I: Integer;
M, Pt: Boolean;
D: Double;
Ex: Integer;
begin
Result := 0.0;
if S = '' then Exit; // а если S=" " - 5 пробелов ?
M := FALSE;
I := 1;
if S[ 1 ] = '-' then // а у меня "-" в S[3]
begin
.....
.....
end;


Редактировалось 7 раз(а), последний 2017-05-01 09:58:46
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#9: 2017-05-01 10:23:26 ЛС | профиль | цитата
Tad писал(а):
Это про что? Про то, что в Delphi 7

А вот результат в FPC

123_123.png

Там по коду видно, что если это не цифра и не "е", и не ".", то крутим дальше

...
while I <= Length( S ) do
begin
case S[ I ] of
'.': if not Pt then Pt := TRUE else break;
'0'..'9': if not Pt then
Result := Result * 10.0 + Integer( S[ I ] ) - Integer( '0' )
else
begin
D := D * 0.1;
Result := Result + (Integer( S[ I ] ) - Integer( '0' )) * D;
end;
'e', 'E': begin
Ex := Str2Int( CopyEnd( S, I + 1 ) );
Result := Result * IntPower( 10.0, Ex );
break;
end;
end;
Inc( I );
end;
...
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#10: 2017-05-01 10:37:01 ЛС | профиль | цитата
nesco писал(а):
Там по коду видно, что если это не цифра и не "е", и не ".", то крутим дальше

А перед этим
  if S = '' then Exit; // а если S="     " - 5 пробелов ? то нахрена крутить дальше ?
M := FALSE;
I := 1;
if S[ 1 ] = '-' then // а у меня "-" в S[3]
Думаю строка S:=Trim(S); была бы совсем не лишней.
Интересно - у всех работает нормально ?

Редактировалось 1 раз(а), последний 2017-05-01 10:40:06
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#11: 2017-05-01 12:14:09 ЛС | профиль | цитата
nesco писал(а):
Там по коду видно, что если это не цифра и не "е", и не ".", то крутим дальше

Как дети, ей богу: http://forum.hiasm.com/topic/62170
Там, в принципе, я все сказал.
Отношение к изменению базовых функций KOL по причине "одна девочка ввела" -- довольно очевидное.

Редактировалось 2 раз(а), последний 2017-05-01 12:18:29
карма: 9

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#12: 2017-05-01 12:33:08 ЛС | профиль | цитата
Tad, КМК, защиту от "дурака" ты должен сам предусмотреть, особенно, при работе со строкой.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#13: 2017-05-01 13:04:46 ЛС | профиль | цитата
nesco писал(а):
защиту от "дурака" ты должен сам предусмотреть, особенно, при работе со строкой.
Ещё 2017-04-28 сделал. Просто откомпилировал Delphi 7.
Пока полёт нормальный.
nesco, вопрос в другом: почему у тебя работает, а у меня такая фигня.

Galkov, по поводу "Delphi7 работает"
Там "%fname%" "-UC:\Program Files\Borland\Delphi7\Lib" "-UC:\work\kol_hiasm" "-E%opath%." -Q
Т.е. там Kol другой. Будет время - гляну отличия.

Редактировалось 1 раз(а), последний 2017-05-01 14:31:36
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
13
Сообщение
...
Прикрепленные файлы
(файлы не залиты)