Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2017, 16:26   #1
adminsamara
Пользователь
 
Регистрация: 05.02.2014
Сообщений: 13
По умолчанию КЭШ СасПланет

Код:
procedure TForm1.Image321MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer; Layer: TCustomLayer);
begin
X_LIVE:=X;
Y_LIVE:=Y;
lat := -(y/c)*180 + 90;
lon := (x/c)*360 -180;
Title_x:=floor((a/2) + Lon * a / 360);
Title_y:=floor((a/2) - 0.5 * ln((1+sin(Lat))/(1-sin(Lat))) * a/(2*pi));
z:=strtofloat(Combobox1.Text);
Capture_X.Caption:=inttostr(X);
Capture_Y.Caption:=inttostr(Y);
Capture_lat.Caption:=floattostr(lat);
Capture_lon.Caption:=floattostr(lon);
Capture_Title_x.Caption:=floattostr(Title_x);
Capture_Title_y.Caption:=floattostr(Title_y);

pyt_k_kartam:='C:\SAS.Planet.Release.160707\cache';
result:=pyt_k_kartam+'\yanarodscheme2015\z'+floattostr(z)+'\'+ floattostr((int(Title_X)) / 1024)+'\x'+floattostr(int(Title_X))+'\'+ floattostr((int(Title_y)) / 1024)+'\y'+floattostr(int(Title_Y))+'.png';
Capture_result.Caption:=result;

if fileexists(result)=true then begin

//Image1.Picture.LoadFromFile(result);
//Image321.Canvas.Draw(Title_x*255,Title_y*255,Image1.Picture.Graphic);

end
else
Memo1.lines.add(result+' файл отсутствует');

end;

Подскажите кто сталкивался, что не так?!
исходные данные
result:=path+'\z'+zoom+'\'+(x div 1024)+'\x'+x+'\'+(y div 1024)+'\y'+y+ext;
где
path - путь к папке кэша
zoom – уровень масштаба
x,y – позиция тайла относительно левого верхнего угла карты.

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 12.01.2017 в 17:16.
adminsamara вне форума Ответить с цитированием
Старый 14.01.2017, 09:57   #2
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 240
По умолчанию

Может проблема в том что в названиях папки "точки", а у вас система дает и StrToFloat вставляет в имена запятые.

floattostr как и strtofloat - опасные функции. Они используют по умолчанию разделяющий знак "," или ".". Зависит это от настроек системы. Можно насильно выбрать разделяющий знак в настройках формата:
Код:
var
tfos:TFormatSettings;
begin
GetLocaleFormatSettings(GetSystemDefaultLCID,tfos);
tfos.DecimalSeparator:='.';
И потом использовать эти настройки в любом StrToFloat:
Код:
s:=StrToFloat(moyastroka,tfos);
blackstrip вне форума Ответить с цитированием
Старый 14.01.2017, 10:15   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Точки или запятой судя по x div 1024 вообще там не должно быть. Зачем floattostr((int(Title_X)) / 1024) ?

Title_x - Integer сделай, если он не такой, в него же floor результат возвращает. И IntToStr(Title_x div 1024) вместо floattostr((int(Title_X)) / 1024). Что там еще с незначащими нулями слева?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.01.2017 в 10:17.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кэш к приложению SviteR Java Мобильная разработка (Android) 1 25.02.2014 12:47
Расшифровать кэш Pasha_Sh Помощь студентам 3 30.12.2010 22:44
Кэш. Функции. KOPC1886 Помощь студентам 3 25.12.2010 23:51
Сокет и кэш Golovastik Операционные системы общие вопросы 1 13.07.2010 08:10
Кэш C# IICuX123 Фриланс 11 21.07.2009 14:09