free(a)
).The behavior of next is undefined if, during the traversal, you assign any value to a non-existent field in the table. You may however modify existing fields. In particular, you may clear existing fields.
TilesAtZoom := 1 shl Zoom; // при условии, что зум считаем с нуля
PixelsAtZoom := 256 * TilesAtZoom;
PixelResolutionLon := 360 / PixelsAtZoom;
PixelResolutionLat := 180 / PixelsAtZoom;
Lon := Lon0 + X * PixelResolutionLon;
Lat := Lat0 - Y * PixelResolutionLat;
unit OpenViewUrl;
interface
// URLEncode is performed on the URL
// so you need to format it protocol://path
function OpenURL(const URL: string; const DisplayError: Boolean = False): Boolean;
implementation
uses
IdURI, SysUtils, Classes, FMX.Dialogs,
{$IFDEF ANDROID}
Androidapi.Helpers,
FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.Net, Androidapi.JNI.JavaTypes;
{$ELSE}
{$IFDEF IOS}
Macapi.Helpers, iOSapi.Foundation, FMX.Helpers.iOS;
{$ENDIF IOS}
{$ENDIF ANDROID}
function OpenURL(const URL: string; const DisplayError: Boolean = False): Boolean;
{$IFDEF ANDROID}
var
Intent: JIntent;
begin
// There may be an issue with the geo: prefix and URLEncode.
// will need to research
Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,
TJnet_Uri.JavaClass.parse(StringToJString(TIdURI.URLEncode(URL))));
try
SharedActivity.startActivity(Intent);
exit(true);
except
on e: Exception do
begin
if DisplayError then ShowMessage('Error: ' + e.Message);
exit(false);
end;
end;
end;
{$ELSE}
{$IFDEF IOS}
var
NSU: NSUrl;
begin
// iOS doesn't like spaces, so URL encode is important.
NSU := StrToNSUrl(TIdURI.URLEncode(URL));
if SharedApplication.canOpenURL(NSU) then
exit(SharedApplication.openUrl(NSU))
else
begin
if DisplayError then
ShowMessage('Error: Opening "' + URL + '" not supported.');
exit(false);
end;
end;
{$ELSE}
begin
raise Exception.Create('Not supported!');
end;
{$ENDIF IOS}
{$ENDIF ANDROID}
end.
function IntervalAsm(const AValue, AMin, AMax: Byte): Boolean; register;
asm
// Входные параметры уже лежат в регистрах:
// al = AValue
// dl = AMin
// cl = AMax
cmp dl, al // сравнение с AMin
ja @@RetFalse // если al < dl, то выход с False
cmp cl, al // сравнение с AMax
jae @@RetTrue // если al <= cl, то выход с True
@@RetFalse:
xor eax, eax // eax = 0 -> Result = False
ret
@@RetTrue:
mov al, 1 // eax = 1 -> Result = True
ret
end;
Лицензии на средства разработки бывают трех типов:
Коммерческая лицензия позволяет: использовать продукт для разработки ПО/распространять разработанное ПО/распространять компоненты ПО (например BDE), которые перечислены в лицензии на распространение.
Ознакомительная (Downloads) лицензия: позволяет ознакомиться и исследовать ПО/ограничена во времени (30 дней)/не позволяет вести никакую разработку
Образовательная (Academic) лицензия позволяет: Использовать продукт в целях изучения на курсах по программированию/Использовать продукт для обучения программированию/Не позволяет вести разработку, которая может быть использована вне процесса обучения
*If you’re an individual you may use the Starter Edition to create apps for your own use and apps that you can sell until your revenues reach $1,000 per year. If you’re a small company or organization without revenue (or up to $1,000 per year in revenue), you can also use the Starter Edition. Once your company's total revenue reaches US $1,000, or your team expands to more than 5 developers, move up to the Professional edition with an unrestricted commercial license.
при передачи по значению передаваемое значение не меняется, а внутри функции создается временная переменная.
при передачи по указателю или ссылки передается только адрес, передаваемый объект можно изменить изнутри функции и не создается локальной (временной) переменной внутри функции. разница между передачи ссылкой и указателем в удобстве употребления (не надо писать звездочку каждый раз внутри функции).
#include <iostream>
using namespace std;
void f_value(int a){ // значение
a = 10; // изменяем параметр
}
void f_poiner(int * a){ // указатель
*a = 10; // изменяем параметр
}
void f_reference(int & a){ // ссылка
a = 20; // изменяем параметр
}
int main(){
int a = 0;
cout << "a = " << a << endl;
f_value(a); // значение переменной (а) НЕ изменится после выполнения
cout << "a = " << a << endl;
f_poiner(&a); // значение переменной (а) изменится после выполнения
cout << "a = " << a << endl;
f_reference(a); // значение переменной (а) изменится после выполнения
cout << "a = " << a << endl;
return 0;
}
---------------------------------------------------
a = 0
a = 0
a = 10
a = 20
Press <RETURN> to close this window...
TNetEncoding.Url.Encode()
).