![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| JokeR.StR |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 7.1.2008 Репутация: нет Всего: нет |
Вот на днях понадобилось перевести из string в double или real а не получилось!
Так значит что я делал:
Заместо double писал и real но угу все равно не поучается!! Выдает ошибку типа 12.32 не может быть этим числом(ну типа того). А вот если вот так:
То вот так все работает!! Помогите плз!!
|
||||||
|
|||||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 7 Всего: 38 |
Поменяй точку на запятую.
-------------------- ![]() |
|||
|
||||
| JokeR.StR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 7.1.2008 Репутация: нет Всего: нет |
Так когда я просто присваиваю у меня же присваивание идет!! |
|||
|
||||
| Данкинг |
|
||||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
А почему тогда просто присваивать нельзя? А вообще лучше действительно запятую сделать вместо точки. И чтобы в "региональных стандартах" тоже в качестве разделителя запятая стояла. -------------------- There's nothing left but silent epitaphs. |
||||
|
|||||
| remax |
|
||||||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
используй константу decimalseparator в ней записан символ десятичного разделителя из региональных стандартов".
Добавлено через 6 минут и 13 секунд
Не надо путать строки и вещественные числа. При работе с вещественными числами всегда (!) в качестве разделителя используется точка. А при преобразовании из строки в число в качестве разделителя используется символ из "региональных стандартов". Это сообщение отредактировал(а) remax - 7.1.2008, 14:34 -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
||||||
|
|||||||
| JokeR.StR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 7.1.2008 Репутация: нет Всего: нет |
Всем большое спасибо!!
|
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 9 Всего: 133 |
remax, фиговый у тебя пример
только нафига тут i надо? -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
забанить бы автора за такой заголовок темы...
-------------------- There are always someone smarter than you... |
|||
|
||||
| remax |
|
||||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
Гы. Посмотри внимательно на свой и на мой пример. У меня универсально. Что бы не было в исходной строке (точка или запятая), какая бы не была региональная настройка (точка или запятая) - сработает правильно. У тебя допустимы только точки в исходной строке. Вот и вся разница. А переменная i и так уже объявлена. -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
||||
|
|||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 9 Всего: 133 |
Она объявлена, это да. Только: -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| remax |
|
||||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
Исходный пример легко модифицируется с преобразования строковой константы на строковую переменную или скажем свойство TEXT, компонента TEDIT.
А писать программы надо так, чтобы легкая модификация не приводила бы к необходимости перелопачивать весь исходник. И учитывая явную неопытность автора темы в программировании имеет смысл показать ему более надежный и универсальный пример. Хотя, 100% надежности не бывает. Скажем, две точки в строке - однозначно фатал. P.S. На мой взгляд тут все прозрачно и очевидно. Странно, что опытный Delphi developer этого не видит. Добавлено через 4 минуты и 41 секунду Не мог удержаться, чтобы не добавить. А с точки зрения эффективности, что предпочтительней использовать
или
Это сообщение отредактировал(а) remax - 7.1.2008, 18:03 -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
||||
|
|||||
| JokeR.StR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 7.1.2008 Репутация: нет Всего: нет |
Да я уже заменил
Про это я сам давно знал и этим воспользовался!! |
|||
|
||||
| source777 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
Естественно StringReplace, причём не только с точки зрения эффективности, но и с точки зрения разумности... Если не веришь проверь, StringReplace опережает по быстродействию твой вариант в 1,5 раза
P.S. Не могу не добавить: Нет большего зла в программировании, чем преждевременная оптимизация, тем более неумелая!!! Добавлено @ 00:36 Кстати если расширить вариант со StringReplace до
Это фактически не скажется на быстродействии, и StringReplace побеждает с тем же результатом (быстрее в 1,5 раза) и с тем же уровнем гибкости... Это сообщение отредактировал(а) source777 - 8.1.2008, 00:39 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||||
|
|||||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
гы. А ты, для интереса, замени s0:='124515.2351636'; на скажем, s0:='5.2';
И мой вариант будет ровно в 2 раза быстрее... да, забыл сказать, убери строку 27 - не спортивно по мелочам махлевать. Скажу даже больше, до длины исходной строки 9 символов включительно мой вариант быстрее. Начиная с 10 твой начинает обгонять. Так что не надо огульно так обвинять в неумелой оптимизации... Добавлено через 11 минут и 4 секунды И чтобы окончательно закрыть тему, надо делать так:
По быстродействию это будет примерно в 50 раз быстрее всех предыдущих вариантов. -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 6 Всего: 111 |
source777, remax
Ребят идите… в аську. Или на крайняк в почту/PM. Ваши замеры совсем не по теме тут уже P. S. Cогласен с MetalFan. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |