Перейти к содержанию
Fire Monkey от А до Я
  • 0

Странности при использовании англоязычного телефона


Gingercat

Вопрос

Доброго дня. 

 

При написании программы вылез интерестный баг, объснить и побороть который не удалось. Вот код заполнения массива числовыми данными из текстового файла:

void __fastcall TTabSlideTransitionFrmBase::MassivCallory(){

		String path = System::Ioutils::TPath::Combine
		(System::Ioutils::TPath::GetSharedDocumentsPath(), "Calorinost_only_number.txt");
	if (FileExists(path)) {
	   TStringList *list = new TStringList;
		list->LoadFromFile(path);
		for ( int i = 0; i < list->Count; i++ )  {
					  TStringDynArray arr(SplitString(list->Strings[i], ";"));
					  for (int u = 0; u < arr.Length; u++)
					  {
							String t = arr[u]; 
							if (t!="") {
								Caloryy[i][u] = StrToFloat(t);
								//Memo1->Lines->Add(t);
							}
					  }
		}
		delete list;
	}
}

При проверке на телефона (Smsung Grand Duos): если телефон с русским интерфесом - все собирается, стартует, и работает отлично. Достаточно выставить в настройках любой язык, отличный от русского - приложение даже не стартует - черный экран и вылет. Пути нормальные (проверял), в массиве данные нормальные, на экран выводятся, а в массив никак :angry: . 

 

Проблема в строке заполнения массива - Caloryy = StrToFloat(t);. Достаточно ее закоментировать - приложение работает. Пробовал сохранить текстовый файл в разных места - ноль толку. Если передавать в массив число - опять же все работает ( к примеруCaloryy = StrToFloat("12.12");

 

Может кто подскажет - где я туплю? Заранее благодарен!

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Возможно, это связано с разными настройками десятичных разделителей в разных языках. Вы используете функцию преобразования StrToFloat с настройками по-умолчанию. Подозреваю, что в разных языках эти умолчания различные. Попробуйте использовать вариант этой функции с двумя параметрами, где формат строкового представления задаётся явно:

function StrToFloat(const S: string; const AFormatSettings: TFormatSettings): Extended;

и задайте AFormatSettings такое как у вас записаны данные в текстовом файле.

Ссылка на комментарий
  • 0

Первое, что я попробовал - сменил формат файла - вместо запятых расставил точки - не помогло.)))) Но все равно сяп - попробую.

Формат файла такой -

14;23;1.2;53.3;303

12;34.9;17.3;26.5;395
14;22.3;1.7;54.5;309
14;24.8;1.1;53.7;310
 
P/S - не помогает - это бред какой то
Ссылка на комментарий
  • 0

 так далеко не полез, но заполнение любого элемента (Memo, Listbox и тд) - проходит адекватно, и как положено - с вырезанными подстроками. Да и если бы была проблема с нарезкой строки - и в русском бы глюкало. Пока обошолся костылем с двойным конвертом - но это ж не дело, так и привыкнуть можно)))

Ссылка на комментарий
  • 0

Спасибо - оно может и проще, была мысль разобраться с Паскалем - более привычно, но - на данный момент бесплатно доступен токма Appmethod, а там бесплатная сборка только на сях - вот и долбаюсь. 

 

Сейчас сохраняю данные в текстовом массиве, и остальную информацию подгоняю под него - костыль, но работает.

 

P.S - дабы не заниматься офтопом, ответ на нижний пост 

xenon54

 - доступно много чего, но, черт подери - хочется же по-людски, по чесному, хоть иногда))))

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...