Version:0.9 StartHTML:0000000105 EndHTML:0000547403 StartFragment:0000001053 EndFragment:0000547387
program PatternFrmDesignStudy_Weather_Report477_Station;
//========================================================================
// free for all(o) 2003 - 2023, Max Kleiner - still on progress!
// sample application for the book Delphi Design Patterns
// proofed by IBZ and BFH V 4.2.7, #locs:2580
// add weather description, one day temp forecast model, V 4.6 - V4.7
// #sign:breitsch: BREITSCH-BOX: 17/04/2023 19:12:29
// update coord and mapbox latitude longitude
// controls & lists external files, #sign>breitsch: BREITSCH-BOX: 17/04/2023 19:12:29
// ex.: if Text = 'MVC' then test: ushuaia, ar
// toogleview_orfile('boldmain.pas'); utf8tostring WeatherREX2
// V4.7 with forecast endpoint: /forecast V4.71 bugfix of REGEX temp_min_max
// https://map.worldweatheronline.com/
// V4.7.2 change mapbox.streets-satellite to mapbox.satellite for png
// V4.7.3 a list of predictions for 5 days - each 3 hours forecast! _1615
// V4.7.4 graph of weather forecast + residual/regression fit of target temp.
// V4.7.7 speed enhancment with httpget() - map as a street map overview - 2023, locs=2580
//#TODO: forecast update+3, graph normalize days + legend, check errorbars
//========================================================================
//{$UNDEF PATTERNS}
{$DEFINE PATTERNS}
(*interface
uses
Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs,
Menus, ImgList, ExtCtrls, uStrategy, IVCLScanner1,
Grids, ComCtrls, StdCtrls, OleCtrls, ToolWin;
type
TmainForm1 = class(TForm)
StatusBar1: TStatusBar;
MainMenu1: TMainMenu;
Datei1: TMenuItem;
Beenden1: TMenuItem;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
tbtnClose: TToolButton;
ImageList1: TImageList;
ImageList2: TImageList;
tbtnGenerator: TToolButton;
ImageList3: TImageList;
tbtnOptions: TToolButton;
Generator: TMenuItem;
mnEncrypt: TMenuItem;
mnDecrypt: TMenuItem;
progBar: TProgressBar;
TreeView1: TTreeView;
Splitter1: TSplitter;
view: TListView;
info1: TMenuItem;
Fractals: TMenuItem;
options: TMenuItem;
MATestCase1: TMenuItem;
tbtnTrans: TToolButton;
mnOpentree: TMenuItem;
mnSearch: TMenuItem;
mnRegistryReader: TMenuItem;
procedure tbtnCloseClick(Sender: TObject);
procedure tbtnOptionsClick(Sender: TObject);
procedure mnEncryptClick(Sender: TObject);
procedure mnDecryptClick(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure FractalsClick(Sender: TObject);
procedure MovingAverage1Click(Sender: TObject);
procedure MATestCase1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure tbtnTransClick(Sender: TObject);
procedure mnOpentreeClick(Sender: TObject);
procedure info1Click(Sender: TObject);
procedure mnSearchClick(Sender: TObject);
procedure dlgSearchFind(Sender: TObject);
procedure viewClick(Sender: TObject);
//procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private-Deklarationen}
FRegCharges: TChargeContext;
FPrefCharges: TChargeContext;
FTrialCharges: TChargeContext;
memMon: TMemo;
frmMon: TForm;
dlgSearch: TFindDialog;
ws_url: string[255];
{$IFDEF PATTERNS}
myWS: IVCLScanner;
myFac: T_RIOFactory;
{$ENDIF}
procedure scanFile_orStream(myFile: string);
procedure FindDlgClose(Sender: TObject; var action: TCloseaction);
procedure Mem2Close(Sender: TObject);
function OpenRead(myfile: String) : String;
procedure parseReg(regKey: string; rootKey: byte);
procedure toogleView_orFile(ufile: string);
public
ListItem: TListItem;
//cause of chartview callback
end; }
var mainForm1: TmainForm1;
Win32Platform: integer =2;
implementation
uses ulooktrans, usingletonF, uFilexport,
fchaos, registry, uCrypto, graphics, chartView; *)
//{$R *.DFM}
procedure parseReg(regKey: string; rootKey:byte); forward;
function ListView_SetTextColor(hwnd: HWND; clrText: TColorRef): Bool; forward;
function FindDesktopWindow: HWND; forward;
function IsDesktopTransparent: Boolean; forward;
procedure SetDesktopIconColor(Foreground,Background: TColor; Trans:Boolean); forward;
procedure SetImageTemperatur(alistitem: Tlistitem); forward;
procedure SetImageTemperaturPredict(alistitem: Tlistitem; aicon: string); forward;
procedure TFrm_UpdateClick(Sender: TObject); forward;
Procedure sunrisesetRouter(lon, lat: float); forward;
function GetGeoInfoMap4save(const lat,lon, zoom: double; asize: integer;
const UrlGeoLookupInfo, apath: string): string; forward;
Procedure loadPredictForm; forward;
var
StatusBar1: TStatusBar;
MainMenu1: TMainMenu;
ImageList1: TCustomImageList;
ImageList2: TCustomImageList;
tbtnGenerator: TToolButton;
Generator: TMenuItem;
progBar: TProgressBar;
TreeView1: TTreeView;
Splitter1: TSplitter;
view, pview: TListView;
ImageList4: TImageList;
ImageList5: TImageList;
Fractals: TMenuItem;
options: TMenuItem;
// MATestCase1: TMenuItem;
tbtnTrans: TToolButton;
mnOpentree: TMenuItem;
//T1: TMenuItem;
memMon: TMemo;
frmMon: TForm;
mem2: TMemo;
dlgSearch: TFindDialog;
ws_url: string;
{$IFDEF PATTERNS}
myWS: IVCLScanner;
//myFac: T_RIOFactory;
{$ENDIF}
ListItem, listitem2: TListItem;
mainForm1: TForm;
myEdit: TEdit;
statBar1, statbar2: TStatusBar; //statbar2 for forecast
selectFile: string;
hh,mm: word;
ss,ms: Word;
//mem2: TMemo;
//dlgSearch: TFindDialog;
//ws_url: string;
asock: TCustomSocket; //TClientSocket; // TServerSocket;
actlocation: string;
var ageofrm: TForm;
zoomf, latf, lonf: double;
const LVM_FIRST = $1000;
const LVM_SETCOLUMNWIDTH = LVM_FIRST + 30;
LVM_SETTEXTCOLOR = LVM_FIRST + 36;
LVM_GETTEXTBKCOLOR = LVM_FIRST + 37;
LVM_SETTEXTBKCOLOR = LVM_FIRST + 38;
LVM_REDRAWITEMS = LVM_FIRST + 21;
LVM_GETITEMCOUNT = LVM_FIRST + 4;
COLOR_DESKTOP = 1;
COLOR_MAX = 15;
{@To get access weather API you need own API key whatever account you chose!!}
UrlWeatherReport25=
'http://api.openweathermap.org/data/2.5/weather?q=%s&units=metric&APPID'+
'=55013bf3d09cfb0619989a00ed5bed09';
UrlWeatherReport25_Forecast=
'http://api.openweathermap.org/data/2.5/forecast?q=%s&units=metric&APPID'+
'=55013bf3d09cfb0619989a00ed5bed09';
//http://api.openweathermap.org/data/2.5/forecast?q=bern&units=metric&APPID=55013bf3d09cfb0619989a00ed5bed09
mapboxAPIEKON21_test=
'https://api.mapbox.com/geocoding/v5/mapbox.places/%s.json?country=%s'+
'&access_token=pk.eyJ1IjoibWF4Ym94IiwiYSI6ImNpdjltZG5vdjAwMGsyemw1b3dpcGxkdWQifQ.ZUbdigkLmcLcX0cCQsds-A';
// mapboxAPIEKON21= 'https://api.mapbox.com/v4/mapbox.satellite
// $ curl -g "https://api.mapbox.com/styles/v1/mapbox/streets-v11/static/0,0,2/600x600?access_token=YOUR_MAPBOX_ACCESS_TOKEN" --output example-
//mapboxAPIEKON21= 'https://api.mapbox.com/v4/mapbox.satellite/%.2f,%.2f,%.2f,0,0/%dx%d.png128?access_token=pk.eyJ1IjoibWF4Ym94IiwiYSI6ImNpdjltZG5vdjAwMGsyemw1b3dpcGxkdWQifQ.ZUbdigkLmcLcX0cCQsds-A';
//mapboxAPIEKON21= 'https://api.mapbox.com/v4/mapbox.satellite/%.2f,%.2f,%.2f,0,0/%dx%d.png128?access_token=pk.eyJ1IjoibWF4Ym94IiwiYSI6ImNrcHdmb3FpcjAxYzcyb25wcXl6dXUxb2oifQ.bRvYgMc2i_D2sk-lARkR_Q';
//mapboxAPIEKON21= 'https://api.mapbox.com/styles/v1/mapbox/static/streets-v12/%.2f,%.2f,%.2f,0,60/%dx%d?access_token=pk.eyJ1IjoibWF4Ym94IiwiYSI6ImNsZ2t5aXdvdzFrZXozcXJyangwbHVxenYifQ._AQqFCDI-PrUqh0bnnebeA/';
mapboxAPIEKON27= 'https://api.mapbox.com/styles/v1/mapbox/streets-v12/static/%.2f,%.2f,%2.f,0,60/%dx%d?access_token=pk.eyJ1IjoibWF4Ym94IiwiYSI6ImNsZ2t5aXdvdzFrZXozcXJyangwbHVxenYifQ._AQqFCDI-PrUqh0bnnebeA';
//https://api.mapbox.com/styles/v1/mapbox/static/streets-v12/-122.4241,37.78,15.25,0,60/400x400?access_token=pk.eyJ1IjoibWF4Ym94IiwiYSI6ImNrcHdmb3FpcjAxYzcyb25wcXl6dXUxb2oifQ.bRvYgMc2i_D2sk-lARkR_Q/
{Imagery sources
Mapbox Satellite imagery comes from a variety of sources depending on zoom level and geographic availability:
Zoom levels 0–8 use de-clouded data from NASA MODIS satellites.
Zoom levels 9–12 use primarily Maxar satellite imagery and NASA/USGS Landsat 5 & 7 imagery in limited locations.
Zoom levels 13+ use a combination of open and proprietary sources, including Maxar's Vivid product for most of the world, Nearmap aerial imagery over US cities, and open aerial imagery from Denmark, France, Germany and other regions.}
const WeatherREX =
//test: '.*Äàòà\s*Êó?ñ\s*Êó?ñ ïîê.\s*Êó?ñ ï?îä.\s*Êóðñ íà?[^<\d]*'
// kairo ---> Al ‘Atabah ----> [\w\s‘]
//'"temp":([\d\.]+).*"pressure":([0-9]+).*"humidity":([0-9]+).*"name":"([\w]+)"';
'"id":([\w]+).*"main":"([\w\s]+)".*"description":"([\w\s]+)".*"temp":([\d\.\-]+).*"pressure":([0-9]+).*'+'"humidity":([0-9]+).*"temp_min":([\d\.\-]+).*"temp_max":([\d\.\-]+).*"country":"([\w\s]+).*"name":"([\w\s‘]+)"';
WeatherREX2 =
'"id":([\w]+).*"main":"([\w\s]+)".*"description":"([\w\s]+)".*"temp":([\d\.\-]+).*'+
'"temp_min":([\d\.\-]+).*"temp_max":([\d\.\-]+).*'+ //5+6
'"pressure":([0-9]+).*'+ //7
'"humidity":([0-9]+).*'+ //8
'"country":"([\w\s]+).*"name":"([\w\s‘]+)"'; //9+10
// forecast city, time, temp, bar, humid, description: string;
WeatherREX2Predict =
'"id":([\w]+).*"main":"([\w\s]+)".*"description":"([\w\s]+)".*"temp":([\d\.\-]+).*'+
'"pressure":([0-9]+).*'+ //7
'"humidity":([0-9]+).*'+ //8
'"country":"([\w\s]+).*"name":"([\w\s‘]+)"'; //9+10
//'"temp":([\d\.-]+).*"pressure":([0-9]+).*"humidity":([0-9]+).*"country":"([\w\s]+).*'+
{ '"id":([\w]+).*"main":"([\w\s]+)".*"temp":([\d\.\-]+).*"pressure":([0-9]+).*'+
'"humidity":([0-9]+).*"country":"([\w\s]+).*"name":"([\w\s‘]+)"'; }
//.*"description":"([\w\s]+)"'; //.*"id":([\w]+)"';
Const GEOCoordREX = '"lon":([\d\.-]+).*,"lat":([\d\.-]+).*';
jsonstr=
'GEO_Weather_Report: {"coord":{"lon":14.16,"lat":46.62},"weather":[{"id":501,"main":"Rain","description":"moderate rain","icon":"10d"}],"base":"cmc stations","main":{"temp":19.93,"pressure":1009,"humidity":64,"temp_min":17,"temp_max":21.67},"wind":{"speed":2.6,"deg":200},"rain":{"1h":1.17},"clouds":{"all":75},"dt":1439818945,"sys":{"type":1,"id":5931,"message":0.0042,"country":"AT","sunrise":1439784246,"sunset":1439834986},"id":2771894,"name":"Maria Worth","cod":200}';
//problem {"type":1,"id":6392,"message":0.0034,"country":"EG","sunrise":1495076362,"sunset":1495125834},"id":7922173,"name":"Al ‘Atabah","cod":200}
jsonip=
'MyPublicIP: { '+
'"ip": "188.60.54.133",'+
'"hostname": "133.54.60.188.dynamic.wline.res.cust.swisscom.ch",'+
'"city": "Lausanne",'+
'"region": "Vaud",'+
'"country": "CH",'+
'"loc": "46.5200,6.6300",'+
'"org": "AS3303 Swisscom (Switzerland) Ltd",'+
'"postal": "1003"}';
type Tweatherrex = record
city, country, temp, bar, humid, line,
descript, description, id, time, coord,
tempmin, tempmax: string;
end;
type Tweatherpredict = record
city, time, temp, bar, humid, description: string;
end;
var wrec: Tweatherrex;
wpred: Tweatherpredict;
function GEOCoord2Point(apistr: string): TFloatPoint;
begin
setdecimalseparator('.')
with TRegExpr.Create do try
writeln('api2point '+apistr)
Expression:= GEOCoordREX;
//writeln(match[1])
if Exec(apistr) then begin
result.x:= strtofloat(Match[1])
result.y:= strtofloat(Match[2])
//writeln('found')
end;
finally Free;
end;
end;
procedure getMultipleWeather(apistr: string);
var latf, lonf: double;
begin
latf:= GEOCoord2Point(apistr).y
lonf:= GEOCoord2Point(apistr).x
writeln('Coord of '+actlocation +' : '
+floattostr(latf)+' '+floattostr(lonf));
with TRegExpr.Create do try
Expression:= weatherREX2;
//apistr:= UTF8ToString(apistr)
writeln('new test '+apistr)
//showmessage(apistr)
if Exec(apistr) then begin
PrintF('Weather Id:%s is %s in: %s at %s° of %s pressure with %s humid',
[Match[1],Match[2],Match[10],Match[4],Match[7],Match[8]+'%']);
//showmessage(match[2])
wrec.id:= match[1];
wrec.descript:= match[2];
wrec.description:= match[3]
wrec.temp:= match[4];
wrec.tempmin:= match[5];
wrec.tempmax:= match[6];
wrec.bar:= match[7];
wrec.humid:= match[8];
wrec.country:= match[9];
wrec.city:= match[10];
wrec.line:=
Format('WeatherId:%s is %s in: %s at %s of %s pressure with %s humid',
[Match[1],Match[2],Match[10],Match[4],Match[7],Match[8]+'%'])
wrec.coord:= floattostr(latf)+'° '+floattostr(lonf);
//sunrisesetRouter(lonf,latf)
//showmessage(wrec.line)
end else showmessage('REGEX apistr not Executed');
except
showmessage(ExceptionToString(ExceptionType, ExceptionParam));
finally Free;
end;
end;
procedure getMultipleWeatherForecast(apistr: string);
begin
with TRegExpr.Create do try
Expression:= weatherREX2Predict;
//apistr:= UTF8ToString(apistr)
//showmessage(apistr)
if Exec(apistr) then begin
PrintF('Weather Id:%s is %s in: %s at %s° of %s pressure with %s humid',
[Match[1],Match[2],Match[3],Match[4],Match[5],Match[6]+'%']);
//showmessage(match[2])
wpred.city:= match[1];
wpred.description:= match[2];
wpred.temp:= match[3];
wpred.bar:= match[4];
wpred.humid:= match[5];
//sunrisesetRouter(lonf,latf)
//showmessage(wrec.line)
end else showmessage('REGEX Forecast apistr not Executed');
except
showmessage(ExceptionToString(ExceptionType, ExceptionParam));
finally Free;
end;
end;
//https://www.weather-forecast.com/locations/Berne/forecasts/latest
procedure AddlistItem(Item: TListItem);
var anum: float;
begin
with Item do begin
Caption:= wrec.id+' '+wrec.city+' :'+wrec.country;
SubItems.Add(wrec.temp+'° hPa: '+wrec.bar+' humid: '
+wrec.humid+'% '+'at '+wrec.coord);
SubItems.Add(wrec.description);
//showmessage(wrec.id)
anum:=StrToFloat(copy(wrec.temp, 1, 2));
anum:= anum / 2
// check for minus sign -
anum:= ((strtofloat(wrec.tempmax) + strtofloat(wrec.tempmin))/2)
SubItems.Add(floattoStr(anum));
end;
end;
procedure AddlistItemPredict(Item: TListItem);
var anum: float;
begin
with Item do begin
Caption:=' '+wpred.city+' :';
SubItems.Add(wpred.temp+'° hPa: '+wpred.bar+' humid: '
+wpred.humid+'% ');
SubItems.Add(wpred.description);
//showmessage(wrec.id)
anum:=StrToFloat(copy(wpred.temp, 1, 2));
anum:= anum / 2
// check for minus sign -
//anum:= ((strtofloat(wrec.tempmax) + strtofloat(wrec.tempmin))/2)
SubItems.Add(floattoStr(anum));
end;
end;
function FindDesktopWindow: HWND;
var Window: HWND;
begin
Window:= FindWindow('Progman','Program Manager');
Window:= FindWindowEx(Window,0,'SHELLDLL_DefView','');
Window:= FindWindowEx(Window,0,'SysListView32','');
Result:= Window;
end;
function ListView_GetTextBkColor(hwnd: HWND): TColorRef;
begin
Result:= SendMessage(hwnd, LVM_GETTEXTBKCOLOR, 0, 0);
end;
function ListView_SetTextBkColor(hwnd: HWND; clrTextBk: TColorRef): Bool;
begin
Result:= Bool( SendMessage(hwnd, LVM_SETTEXTBKCOLOR, 0, clrTextBk) );
end;
function ListView_RedrawItems(hwndLV: HWND; iFirst, iLast: Integer): Bool;
begin
Result:= Bool( SendMessage(hwndLV, LVM_REDRAWITEMS, iFirst, iLast) );
end;
function ListView_GetItemCount(hWnd: HWND): Integer;
begin
Result:= SendMessage(hWnd, LVM_GETITEMCOUNT, 0, 0);
end;
function IsDesktopTransparent: Boolean;
var
BkColor: COLORREF;
begin
BkColor:= ListView_GetTextBkColor(FindDesktopWindow);
if BkColor <> $FFFFFFFF then
Result:= False
else
Result:= True;
end;
procedure SetDesktopIconColor(Foreground, Background: TColor; Trans: Boolean);
var Window: HWND;
begin
Window := FindDesktopWindow;
if Trans = True then
ListView_SetTextBkColor(Window,$FFFFFFFF)
else
ListView_SetTextBkColor(Window,Background);
ListView_SetTextColor(Window, Foreground);
ListView_RedrawItems(Window,0,ListView_GetItemCount(Window) - 1);
UpdateWindow(Window);
end;
procedure TFrm_FormCreate(Sender: TObject);
begin
tbtnTrans.Enabled:=false;
//FRegCharges:= TMonthlyCharges.Create(TRegularCharge.Create);
//FPrefCharges:= TMonthlyCharges.Create(TPreferredCharge.Create);
//FTrialCharges:= TMonthlyCharges.Create(TTrialCharge.Create);
//frmChart:=TfrmChart.create(self);
self.Visible:=true;
self.Height:= 550;
self.ClientHeight:= 500;
self.Width:= 765;
self.ClientWidth:= 755;
end;
procedure TFrm_FormActivate(Sender: TObject);
begin
self.Caption:='Delphi Python Design Patterns';
progBar.visible:= false;
statusbar1.simplepanel:= true;
//statusbar2.simplepanel:= true;
//trans.strlit[19];
statusBar1.SimpleText:='max@kleiner.com';
end;
procedure TFrm_FormDestroy(Sender: TObject);
begin
//frmChart.release;
messagebeep(0);
//FRegCharges.Free;
//FPrefCharges.Free;
//FTrialCharges.Free;
//mem2.Free;
end;
procedure TFrm_mnEncryptClick(Sender: TObject);
var //myCrypt: TCryptoDecorator2;
od1: TOpenDialog;
step, size: Longint;
passB: integer;
psStr: string;
crMode: byte;
F, F1: TextFile;
begin
if TMenuItem(sender).Name = 'mnDecrypt' then
crMode:= 2 else crMode:= 1;
//myCrypt:= TCryptoDecorator2.create(TCrypto.create);
od1:= TOpenDialog.Create(NIL);
step:= 0;
//psStr:= InputBox(trans.strLit[2], trans.strlit[3], '');
//trans.password:= psStr;
if psStr = '' then begin
//messagedlg(trans.strlit[4], mtError, [mbOk], 0);
exit;
end;
od1.execute;
try
passB:= strToInt(psStr);
if length(od1.FileName) < 1 then
//messagedlg(trans.strlit[5],mtError,[mbOk], 0)
else begin
AssignFile(F, OD1.FileName);
Reset(F);
//fHandle:= FileOpen(Od1.FileName, 2);
//Size:= filesize(F);
with progbar do begin
visible:= True;
Min:= 0; Max:= Size;
Step:= 1;
//color
end;
if crMode = 1 then begin
//more performance without progbar
AssignFile(F1, 'chiffrat.txt');
Rewrite(F1);
//while not EOF(F) do begin
while not EOF do begin
//7readln(F,dataStr);
//chiffr:= myCrypt.encrypt1(passB, dataStr, step);
//if trans.cbcrypt.checked then progBar.StepIt;
//writeln(F1, chiffr);
end;
//messagedlg(trans.strlit[6], mtInformation, [mbOk], 0)
end else if crMode = 2 then begin
AssignFile(F1, 'clear.txt');
Rewrite(F1);
while not EOF do begin
//readln(F,dataStr);
//7chiffr:= myCrypt.decrypt1(passB, dataStr, step);
//writeln(F1, chiffr);
//append(F1);
end;
//messagedlg(trans.strlit[7], mtInformation, [mbOk], 0);
end; //crMode
end; //filename
finally
flush(F1);
//myCrypt.Free;
od1.Free;
closeFile(F);
closeFile(F1);
progbar.Visible:= False;
end;
end;
function TFrm_OpenRead(myfile: String) : String;
var f: TextFile;
content, row: string;
begin
content:= '';
if fileexists(myfile) then begin
Assignfile(f, myfile);
Reset(f);
while not eof do begin
//ReadLn(F, row);
content:= content + row + chr(13);
end;
CloseFile(F);
Result := content;
end else
//Result := trans.strlit[5];
end;
procedure TFrm_scanFile_orStream(myFile: string);
var
Tempstr, cont: String;
position: integer;
begin
//mem2close(NIL);
with view do begin
//ListItem
if fileexists(myFile) then
cont:= TFrm_openRead(myFile) else
cont:= myfile;
position:= pos(chr(13), cont);
if (position = 0) and (length(trim(cont)) > 0) then begin
ListItem:= Items.Add;
ListItem.Caption := cont;
exit
end;
while position > 0 do begin
TempStr:= cont;
delete(TempStr, position, length(TempStr) - position + 1);
delete(cont, 1, position);
ListItem:= Items.Add;
ListItem.Caption := TempStr;
position:= pos(chr(13), cont);
end;
end;
end;
procedure TFrm_toogleView_orFile(ufile: string);
begin
if not assigned(mem2) then begin
mem2:= TMemo.Create(application);
//if q.loadFromStreamFile('patterns.dsm',aStream) then
mem2.parent:= view;
mem2.Align:= alclient;
mem2.Font.Size:= 12;
//mem2.OnDblClick:= mem2Close;
//mem2.lines.LoadFromStream(aStream);
end;
if fileexists(uFile) then
mem2.lines.LoadFromFile(ufile)
else begin
mem2.Clear;
mem2.Lines.add(ufile);
end;
mem2.Show;
end;
procedure TFrm_Mem2Close(Sender: TObject);
begin
if assigned(mem2) then begin
mem2.clear;
mem2.Parent:= NIL;
mem2:= NIL;
mem2.Free;
end;
end;
procedure TFrm_TreeView1Change(Sender: TObject; Node: TTreeNode);
(*const
//array of critical files just to test
sProgs: array[0..3, 0..1] of ShortString = (
('Passwort.ini', 'T-Online Passwörter'),
('Cis.ini', 'CompuServe Passwortdatei'),
('Services', 'Port-Eintraege zu TCP/IP'),
('Sam','Sicherheits-Eintraege')); *)
//aStream: TMemoryStream;
//q: TTxtFile;
begin
view.Items.Clear;
//****************start treeview events********************
with Treeview1.selected do begin
if Text = 'OCL' then
TFrm_scanFile_orStream('ocl_facts.txt');
if Text = 'Delegation' then
TFrm_scanFile_orStream('delegate.txt');
if Text = 'Refactoring' then
TFrm_scanFile_orStream('refactoring.txt');
if Text = 'Redesign' then
TFrm_scanFile_orStream('redesign.txt');
if Text = 'DUnit' then
TFrm_scanFile_orStream('algorithms.pas');
if Text = 'NUnit' then
TFrm_scanFile_orStream('nunit.txt');
if Text = 'Interfaces' then
TFrm_toogleview_orfile('IVCLScanner1.pas');
if Text = 'Lists' then
TFrm_toogleview_orfile('listCollect.pas');
if Text = 'Singleton' then begin
TFrm_toogleview_orfile('uSingletonF.pas');
//SingleKeeper.Show;
end;
if Text = 'SingletonAlt' then
//TSingletonForm.Instance.Show;
if Text = 'Observer' then begin
//SingleKeeper.Show;
TFrm_toogleview_orfile('uObserver.pas');
end;
if Text = 'Template' then begin
//mem2close(sender);
//TFrm_scanFile_orStream(trans.executeTemplate.strings[0]);
//trans.executeTemplate.Free
end;
if Text = 'Strategy' then with view do begin
//simulating client using Strategy context object
//mem2close(sender);
Clear;
listItem:= Items.Add;
//listItem.Caption:= (trans.strlit[16]);
listItem:= Items.Add;
//listItem.Caption:=
// Format('Regular %m',[FRegCharges.CompCharges(1000)]);
listItem:= Items.Add;
listItem:= Items.Add;
//listItem.Caption:=
// Format('Trial %m',[FTrialCharges.CompCharges(1000)]);
end;
if Text = 'Lock' then begin
//transMonitor.createTrans(NIL); //class instance
statusBar1.SimpleText:='running trans in button';
tbtnTrans.Enabled:=not(tbtnTrans.Enabled);
//toogle button
TFrm_toogleview_orfile('ulooktrans.pas');
end;
if Text = 'Abstract' then
//toogleview_orfile('abstfact.htm');
if Text = 'Builder' then
TFrm_toogleview_orfile('uSingletonF.pas');
if Text = 'Factory' then
TFrm_toogleview_orfile('uObserver.pas');
if Text = 'Adapter' then
TFrm_toogleview_orfile('uObserver.pas');
if Text = 'Bridge' then
TFrm_toogleview_orfile('uFilexport.pas');
if Text = 'Composite' then
TFrm_toogleview_orfile('u_Composition.pas');
if Text = 'Decorator' then
TFrm_toogleview_orfile('uCrypto.pas');
if Text = 'Facade' then
TFrm_toogleview_orfile('marshall.pas');
if Text = 'Flyweight' then
TFrm_toogleview_orfile('uStrategy.pas');
if Text = 'Proxy' then
TFrm_toogleview_orfile('IVCLScanner1.pas');
if Text = 'Wrapper' then
TFrm_toogleview_orfile('uFilexport.pas');
if Text = 'Chain' then
TFrm_toogleview_orfile('ulooktrans.pas');
if Text = 'Command' then begin
TFrm_toogleview_orfile('uStrategy.pas');
//TFrmChaos.getFrmInstance.Show;
end;
if Text = 'Interpreter' then
TFrm_toogleview_orfile('patternFrm.pas');
if Text = 'Iterator' then
TFrm_toogleview_orfile('iterator.txt');
if Text = 'Mediator' then
TFrm_toogleview_orfile('uFilexport.pas');
if Text = 'Memento' then
TFrm_toogleview_orfile('Graphics.pas');
if Text = 'State' then
TFrm_toogleview_orfile('foerderband.pas');
if Text = 'Visitor' then
TFrm_toogleview_orfile('RND.pas');
if Text = 'Automation' then
TFrm_toogleview_orfile('i2c.pas');
if Text = 'Broker' then begin
TFrm_toogleview_orfile('IVCLScanner1.pas');
//like an abstract factory in HTTPRIO
//ws_url:=WSURL1;
{$IFDEF PATTERNS}
//myWS:= myFac.GetIVCLScanner(false, ws_url);
//myWS.PostUser(trans.strlit[19], trans.strlit[14], 'mix')
{$ENDIF}
end;
if Text = 'Container' then
TFrm_toogleview_orfile('income.dpr');
if Text = 'Layers' then
TFrm_toogleview_orfile('banklogic.pas');
if Text = 'Master-Slave' then
TFrm_toogleview_orfile('sortThds.pas');
if Text = 'Microkernel' then
TFrm_toogleview_orfile('shellConsts.pas');
if Text = 'Monitor' then
TFrm_toogleview_orfile('chartView.pas');
if Text = 'MVC' then
TFrm_toogleview_orfile('boldmain.pas');
if Text = 'PAC' then
TFrm_toogleview_orfile('boldbase.pas');
if Text = 'Prototyp' then
TFrm_toogleview_orfile('testmodules.pas');
if Text = 'Provider' then
TFrm_toogleview_orfile('DMU.pas');
if Text = 'Simulator' then
TFrm_toogleview_orfile('RND.pas');
if Text = 'Terminal-Server' then
TFrm_toogleview_orfile('fterminal.pas');
if Text = 'Transaction' then
TFrm_toogleview_orfile('u_dwsserver1.pas');
if Text = 'Watchdog' then
TFrm_toogleview_orfile('monForm.pas');
end; //with
end; //treeview
procedure TFrm_mnOpentreeClick(Sender: TObject);
begin
with mnOpenTree do begin
if tag=0 then begin
treeview1.FullExpand;
//Caption:=trans.strlit[21];
tag:=1
end else begin
treeview1.FullCollapse;
//mnOpenTree.Caption:=trans.strlit[22];
tag:=0;
end;
end
end;
procedure TFrm_color1Click(Sender: TObject);
begin
writeln(itoa(TColorbox(sender).selected));
writeln(ColorToString(TColorbox(sender).selected));
ListView_SetTextColor(view.Handle,TColorbox(sender).selected)
//statusBar1.SimpleText:=trans.strlit[19];
end;
procedure TFrm_FindDlgClose(Sender: TObject; var action: TcloseAction);
begin
dlgSearch.CloseDialog;
dlgSearch:= NIL;
dlgSearch.Free;
end;
procedure TFrm_mnSearchClick(Sender: TObject);
var aTop: TPoint;
begin
if not assigned(dlgsearch) then begin
dlgSearch:= TFindDialog.Create(self);
frmMon:= TForm.create(dlgSearch);
memMon:= TMemo.create(frmMon);
//frmMon.canvas
with mainForm1 do begin
aTop.y:=Top;
aTop.x:=Left;
end;
try
//dlgSearch.OnFind:= @TFrm_dlgSearchfind;
frmMon.OnClose:= @TFrm_findDlgClose; //on destroy
frmMon.Parent:= self;
memMon.parent:= frmMon;
memMon.setbounds(10,10,290,190);
//frmMon.caption:=trans.strLit[14];
with frmMon do begin
//top:=ATop.y + view.Top + toolbar1.Height + 12;
left:=ATop.x + view.left + 6;
show;
end;
dlgSearch.Execute
finally
//memMon:=NIL;
//frmMon.Release;
end;
end else exit
end;
procedure TFrm_r1Click(Sender: TObject);
begin
parseReg('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',1);//
end;
procedure TFrm_r2Click(Sender: TObject);
begin
parseReg('SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce',1);
end;
procedure TFrm_R3Click(Sender: TObject);
begin
parseReg('SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx',1);
end;
procedure TFrm_R4Click(Sender: TObject);
begin
parseReg('SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices',1);
end;
procedure TFrm_R5Click(Sender: TObject);
begin
parseReg('SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce',1)
end;
procedure TFrm_T1Click(Sender: TObject);
begin
parseReg('Software\Microsoft\Internet Explorer\TypedURLs',2);//
end;
procedure parseReg(regKey: string; rootKey:byte);
var reg: TRegistry;
mySV: TStringList;
keyContent: string;
i: integer;
begin
reg:= TRegistry.create;
try
case rootKey of
1:reg.RootKey:= HKEY_LOCAL_MACHINE;
2:reg.RootKey:= HKEY_CURRENT_USER;
end;
if reg.OpenKey(regKey, false) then begin
mySV:= TStringList.Create;
view.Items.Clear;
try
//reg.GetKeyNames(mySK);
//returns keys!
reg.GetValueNames(mySV);
for i:= 0 to mySV.Count - 1 do begin
keyContent:= mySv.Strings[i];
ListItem:= view.Items.Add;
ListItem.Caption:=
keyContent +'/ '+ reg.ReadString(keyContent);
//ListItem.Subitems.Add(reg.ReadString(keyContent));
end;
finally
mySV.Free;
end;
reg.CloseKey;
end;// if
finally
reg.Free;
end;
end;
(*procedure TFrm_viewClick(Sender: TObject);
var cycle: byte;
fname: string;
begin
with View do begin
if frmchart.optimise then begin
frmchart.SetFocus;
frmchart.Timer1.Enabled:= false;
cycle:= strToint(copy(selected.Caption,1,2)) ;
frmchart.drawListChart(cycle);
end;
if frmchart.optimiseall then begin
frmchart.SetFocus;
frmchart.Timer1.Enabled:= false;
fname:= copy(selected.caption,1,pos(':',selected.Caption));
frmchart.loadChartDirect(fname);
end;
end;
end; *)
CONST AExponent = 4;
ANIMATEDELAY = 4;
var distX, distY, glx,gly, step, pct: float;
endX, endY, beginX, beginY: integer;
FPicRed, FStorage: TBitMap;
FNewRect: TRect;
FOldRect: tRect; //make foldrect local!
FirstTime: boolean;
procedure setupAnimation();
begin
//FNewRect: TRect;
//FOldRect: tRect; //make foldrect local!
//FirstTime: boolean;
FPicRed:= TBitMap.Create;
FPicRed.transparent:= true;
FStorage:= TBitMap.Create;
FStorage.Width:= FPicred.Width;
FStorage.Height:= FPicred.Height;
Screen.Cursor:= crCross;//loadCursor(hinstance,'Pan_All'); //crCross;
//FPicRed.LoadFromFile(Exepath+'\examples\images\red1.bmp');
beginX:= 20; // Initial x-coordinate
beginY:= 20; // Initial y-coordinate
endX:= 470; // Final x-coordinate
endY:= 320; // Final y-coordinate
glx:= 20.0; // Current x-coordinate
gly:= 20.0; // Current y-coordinate
step:= 0.01; // Size of each step along the path 100 steps
pct:= 0.0; // Percentage traveled (0.0 to 1.0)
distX:= endX - beginX;
distY:= endY - beginY;
end;
var aFrm, aPfrm: TForm;
// statBar1: TStatusBar;
procedure drawE2(abeginx, abeginy, endx, endy: integer);
var i: integer;
begin
pct:= 0.0;
distX:= endX - beginX;
distY:= endY - beginY;
for i:= 1 to 100 do begin
pct:= pct+ step;
if (pct < 1.0) then begin
glx:= beginX + (pct * distX);
gly:= beginY + (power(pct, AExponent+5) * distY);
end;
afrm.repaint;
afrm.canvas.draw(round(glx)-20,round(gly-20), fPicRed);
delay(ANIMATEDELAY);
end;
end;
procedure TRebWizForm_ExamineDir;
var
FileList: TStrings;
I: Integer;
CurrDir: string;
FileListBox1: TFileListBox;
listboxfiles: TListbox;
begin
// examining .dpr files
FileListBox1.Mask := '*.dpr';
FileListBox1.FileType := [ftNormal];
FileList := TStringList.Create;
try
FileList.Assign(FileListBox1.Items);
// for each file, add its path to the list
for I := 0 to FileList.Count - 1 do begin
ListBoxFiles.Items.Add (FileListbox1.Directory +
'\' + FileList[I]);
end;
// examine sub directorties
FileListBox1.Mask := '*.*';
FileListBox1.FileType := [ftDirectory];
FileList.Assign(FileListBox1.Items);
CurrDir := FileListbox1.Directory;
// for each dir re-examine...
for I := 2 to FileList.Count - 1 do begin
FileListbox1.Directory :=
CurrDir + '\' + Copy (FileList[I], 2,
Length (FileList [I]) - 2);
TRebWizForm_ExamineDir;
end;
FileListbox1.Directory := CurrDir;
finally
FileList.Free;
end;
end;
function GetGeoWeather(const location: string;
const UrlRestAPI: string): string;
var lHTTP: TIdHTTP;
lStream: TStringStream;
asyn: TSynwInfo;
//dl: TDownloadURL;
begin
lHTTP:= TIdHTTP.Create(NIL);
lStream:= TStringStream.Create('');
try
try
//lHTTP.Get1(Format(UrlRestAPI,[location]),lStream);
HTTPGet(Format(UrlRestAPI,[location]),lStream);
//writeln('html back: '+lHTTP.Get(Format(UrlRestAPI,[location])));
//writeln(lHTTP.Get('http://google.com'));
except
//lHTTP.Get1(Format(UrlGeoLookupInfo2,[location]),lStream);
//if something wrong try using a backup server.
//writeln('html back: '+GetURLAsString('http://api.openweathermap.org'));
writeln('OWeather_Map Exception: '+Gethtm(UrlWeatherReport25))
end;
lStream.Seek(0,0);
result:= 'GEO_Weather_Report2: '+UTF8ToString(lStream.ReadString(lStream.Size));
finally
lHTTP.Free;
lStream.Free;
end;
end;
Const RealIP_REX = '"city": "([üöä\w\s]*).*"country": "([\w\s]+).*"';
var LocalCity, LocalCountry: string;
function GetRealIP2(): String;
var LJsonObj: TJSONObject;
str: string;
http : TIdHttp;
begin
str:='';
http:=TIdHTTP.Create(Nil);
try
str:= UTF8toAnsi(http.Get('http://ipinfo.io/json'));
LJsonObj:= TJSONObject.create4(str);
//TEncoding.ASCII.GetBytes(str),0) as TJSONObject;
//str := LJsonObj.Get('ip').JsonValue.Value;
//LJsonObj.clone;
//LJsonObj.GetItemAsStrUTF8 GetItemAsStrUTF8('ip');
//result:= LJsonObj.GetString('"ip":');
// result:= LJsonObj.GetString('"hostname":');
// str:= HTTPEncode(str)
//str:= UTF8ToString(str)
with TRegExpr.Create do try
Expression:= RealIP_REX;
if Exec(str) then begin
PrintF('IP Weather Local City Name: %s ',[Match[1]])
PrintF('IP Weather Local Country Name: %s ',[Match[2]])
LocalCity:= match[1]
LocalCountry:= match[2]
//UTF8 umlaute
{s:= StringReplace(s, 'ä', 'ä', [rfReplaceAll]);
s:= StringReplace(s, 'ö', 'ö', [rfReplaceAll]);
s:= StringReplace(s, 'ü', 'ü', [rfReplaceAll]); }
localcity:= StringReplace(localcity, 'ä', 'ae', [rfReplaceAll]);
localcity:= StringReplace(localcity, 'ö', 'oe', [rfReplaceAll]);
localcity:= StringReplace(localcity, 'ü', 'ue', [rfReplaceAll]);
writeln('aeo name convert: '+localcity)
end else writeln('ip localcity not found');
finally Free;
end;
Except
writeln('get real ip EXCEPTION ')
raiselastException;
end;
result:= str;
LJsonObj.Free;
http.Free;
end;
//**************************Event Handlers*******************************
procedure FormMouseDown(sender: TObject; Button: TMouseButton;
Shift: TShiftState; vX, vY: Integer);
begin
BitBlt(FStorage.Canvas.Handle,0,0, FPicred.Width, FPicred.Height,
afrm.Canvas.Handle, FNewRect.Left, FNewRect.Top, SRCCOPY);
pct:= 0.0;
beginX:= round(glx);
beginY:= round(gly);
endX:= vX; //mouseX
endY:= vY;
afrm.repaint;
//FormDrawBitmap(Exepath+BACKMAP,10,10, bfrm.canvas);
drawE2(beginx,beginy, endx,endy);
end;
//var trackval: integer; //progbar: TProgressbar;
procedure TFrm1_trackSpeedChange(Sender: TObject);
begin
//mt.Interval:= 1000 div tB.Position;
//writeln(intToStr(1000 div TTrackbar(sender).Position));
writeln(intToStr(TTrackbar(sender).Position));
//trackval:= TTrackbar(sender).Position;
Progbar.Position:= TTrackbar(sender).Position*10;
end;
procedure TFrm1_progressChange(Sender: TObject);
begin
//mt.Interval:= 1000 div tB.Position;
//writeln(intToStr(1000 div TTrackbar(sender).Position));
writeln(intToStr(TTrackbar(sender).Position));
end;
procedure TFrm1_closeForm(Sender: TObject; var Action: TCloseAction);
begin
{if mt <> NIL then begin
mT.enabled:= false;
mT.Free;
mT:= NIL;
end;}
///afrm.Free;
if assigned(FPicRed) then
FPicRed.Free;
FPicRed:= NIL;
if assigned(FStorage) then
FStorage.Free;
FStorage:= NIL;
imagelist1.Free;
imagelist2.Free;
view.Free;
action:= caFree;
afrm:= NIL;
Screen.Cursor:= crDefault
writeln('geo map6 form free and API closed');
end;
procedure TFrm2_closeForm(Sender: TObject; var Action: TCloseAction);
begin
{if mt <> NIL then begin
mT.enabled:= false;
mT.Free;
mT:= NIL;
end;}
///afrm.Free;
{if assigned(FPicRed) then
FPicRed.Free;
FPicRed:= NIL;
if assigned(FStorage) then
FStorage.Free;
FStorage:= NIL;
imagelist1.Free;
imagelist2.Free;
view.Free; }
//action:= caFree;
//aPfrm:= NIL;
Screen.Cursor:= crDefault
writeln('geo map6 forecaster form free');
end;
procedure TFrm1_CloseClick(Sender: TObject);
begin
afrm.Close;
writeln('geo map form close and free at: '+datetimetostr(now));
zoomf:= 16;
end;
procedure Map_CloseClick(Sender: TObject; var action: TCloseAction);
begin
//afrm.Close;
action:= cafree;
writeln('only mapform close at: '+datetimetostr(now));
//zoomf:= 16;
end;
const MEDIAPATH = 'examples\';
procedure OpenWeatherList(sender: TObject);
begin
//cryptFile:= 'C:\SecureCenter\Dec 15 2010mx3\maxboxerrorlog2.txt';
//cryptFile:= 'C:\SecureCenter\Dec 15 2010mx3\maxboxerrorlog2.txt';
if PromptForFileName(selectFile,'Files(*.*)|*.*',//others
'', 'Select your weather filelist', MEDIAPATH, False)
then begin
(*mPanel.font.color:= clyellow;
mPanel.font.size:= 18;
mPanel.caption:= ExtractFileName(selectFile)+' encrypt...';
//cfile:= LoadFileAsString(selectFile);
Application.ProcessMessages;
screen.Cursor:= crHourglass;
with clstBox.Items do begin
Add('SHA256 Hash of: '+ExtractFileName(selectFile));
Add('is: '+ComputeSHA256(selectFile,'F'));
idx:= Add('File to Crypt: '+ExtractFileName(selectFile));
stat.SimpleText:= clstBox.items[idx];
end;
with TStopwatch.Create do begin
Start;
AESSymetricExecute(selectFile,selectFile+'_encrypt',aespassw);
mPanel.font.color:= clblue;
mPanel.font.size:= 30;
mPanel.caption:= 'File Encrypted!';
screen.Cursor:= crDefault;
Stop;
//clstBox.Items.Add('Time: ' +(floattoStr(GetValueMSec/1000)));
clstBox.Items.Add('Time consuming: ' +GetValueStr +' of: '+
inttoStr(getFileSize(selectFile))+' File Size');
Free;
end;
//add hash and cipher to compare later on
cLstbox.Items.Add('Crypted file: '+ExtractFileName(selectFile)+'_encrypt');
WriteLog(cryptLog, clstbox.items.text)
{clearout:= S_StrDEcrypt96(cryptin, StartKey, MultKey, AddKey);
CreateFileFromString(selectFile+'_decrypt', clearout);}
*)
end;
end;
procedure TFrm1_AddClick(Sender: TObject);
begin
{if mT <> NIL then
mt.enabled:= not mt.enabled; }
actlocation:= removespaces(myedit.text);
//actlocation:= TrimSpacesL(myedit.text);
TFrm_updateclick(self)
end;
procedure btnZoomPlusClick2(Sender: TObject);
var abitmap: TBitmap;
zoomval: integer;
begin
try
//abitmap.Assign(MainForm.imgMain.Picture.Bitmap);
zoomf:= zoomf-1
GetGeoInfoMap4save(latf,lonf,zoomf,650,mapboxAPIEKON27,
//ExePath+'mX4mapbox_duesseldorf2.png')
ExePath+'examples\mX4mapbox_weatherzoom4.png')
//SetWorldTransform(ageofrm.Canvas.Handle, ageofrm);
finally
//abitmap.Free
end;
end;
var APATHGLOB: string;
procedure Save1Click(Sender: TObject);
begin
openfile(APATHGLOB)
end;
function GetGeoInfoMap4save(const lat,lon, zoom: double; asize: integer;
const UrlGeoLookupInfo, apath: string): string;
var
pngStream: TMemoryStream;
internalzoomf: double;
MainMenu1: TMainMenu;
File1: TMenuItem;
// zoomf: double;
begin
pngStream:= TMemoryStream.Create;
try
HttpGet(Format(UrlGeoLookupInfo,[lon,lat,zoom, asize-50,asize-50]), pngStream);
//WinInet Circuit
except
//lHTTP.Get1(Format(UrlGeoLookupInfo2,[IpAddress]), lStream);
//if something wrong try using backup server.
writeln(ExceptionToString(ExceptionType, ExceptionParam));
end;
with TLinearBitmap.Create do try
pngStream.Position:= 0;
LoadFromStream2(pngStream,'PNG');
internalzoomf:= 16;
MainMenu1:= TMainMenu.create(self)
ageofrm:= getForm2(asize+8,asize+8, clgreen,
'GEO MAP Weather 5.5: '+'zoom: '+floattostr(zoomf));
ageofrm.Menu := MainMenu1;
file1 := TMenuItem.create(ageofrm);
with file1 do begin
//parent:= form1;
Caption := 'Open &File Save...'
mainmenu1.Items.Add(file1);
OnClick := @Save1Click;
end;
ageofrm.ondblclick:= @btnZoomPlusClick2;
ageofrm.onclose:= @Map_CloseClick;
paintToCanvas(ageofrm.canvas, Rect(2,2,Width,Height),false);
//paintToCanvas(getform2(asize+15,asize+15,clred, 'GEO MAP Weather 3.0').canvas,
// Rect(5,5,Width,Height),false);
SaveToFile(apath);
APATHGLOB:= apath;
finally
Dispose;
Free;
pngStream.Free;
end;
end;
procedure ListClick(Sender: TObject);
//var latf, lonf: double;
begin
{if mT <> NIL then
mt.enabled:= not mt.enabled; }
writeln(objecttostring(sender))
//writeln(TListview(sender).items[3].caption);
writeln(TListview(sender).selected.caption);
writeln(copy(TListview(sender).selected.caption,4,20));
actlocation:= copy(TListview(sender).selected.caption,4,20);
writeln('this acvt replace'+actlocation)
actlocation:= StrReplaceChar(actlocation, ':',',')
if isInternet then begin
sr:= GetGeoWeather(removespaces(actlocation), UrlWeatherReport25);
writeln(sr)
statbar1.panels.items[1].text:= sr; //add to x4
statbar1.hint:= sr;
end;
latf:= GEOCoord2Point(sr).y
lonf:= GEOCoord2Point(sr).x
writeln('coord of '+actlocation +' : '
+floattostr(latf)+' '+floattostr(lonf));
zoomf:= 16;
GetGeoInfoMap4save(latf,lonf,zoomf,650,mapboxAPIEKON27,
ExePath+'mX4mapbox_weatherapp4.png')
// sunrisesetRouter(lonf,latf);
// openDoc('C:\maXbox\EKON20\EKON20_Scripts\imagesServer\cologne_dom.bmp')
{ for i := 0 to Items.Count - 1 do
if Items[i].Selected then
Items[i].Caption := Items[i].Caption + ' - Selected!';
}
end;
procedure ListClick2(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
//var latf, lonf: double;
begin
{if mT <> NIL then
mt.enabled:= not mt.enabled; }
writeln(objecttostring(sender))
//writeln(TListview(sender).items[3].caption);
writeln(TListview(sender).selected.caption);
writeln(copy(TListview(sender).selected.caption,4,20));
actlocation:= copy(TListview(sender).selected.caption,4,20);
writeln('this acvt replace'+actlocation)
actlocation:= StrReplaceChar(actlocation, ':',',')
if isInternet then begin
sr:= GetGeoWeather(removespaces(actlocation), UrlWeatherReport25);
writeln(sr)
statbar1.panels.items[1].text:= sr; //add to x4
statbar1.hint:= sr;
end;
// sunrisesetRouter(lonf,latf);
// openDoc('C:\maXbox\EKON20\EKON20_Scripts\imagesServer\cologne_dom.bmp')
{ for i := 0 to Items.Count - 1 do
if Items[i].Selected then
Items[i].Caption := Items[i].Caption + ' - Selected!';
}
end;
///handles ListView1's On Double Clickprocedure
procedure TFormListView1DblClick(Sender: TObject) ;
var Caption: string;
hts : THitTests;
ht : THitTest;
sht : string;
ListViewCursosPos : TPoint;
ListView1: TListview;
selectedItem : TListItem;
begin
//position of the mouse cursor related to ListView
ListViewCursosPos := ListView1.ScreenToClient(Mouse.CursorPos) ;
//double click where?
hts := ListView1.GetHitTestInfoAt(ListViewCursosPos.X, ListViewCursosPos.Y) ;
//"debug" hit test
Caption := '';
//for ht in hts do
begin
//sht := GetEnumName(TypeInfo(THitTest), Integer(ht)) ;
Caption := Format('%s %s | ',[Caption, sht]) ;
end;
//locate the double-clicked item
// if hts <= [htOnIcon, htOnItem, htOnLabel, htOnStateIcon] then begin
selectedItem := ListView1.Selected;
//do something with the double clicked item!
Caption := Format('DblClcked : %s',[selectedItem.Caption]) ;
// end;
end;
procedure ListClickPredict(Sender:TObject;Button:TMouseButton; Shift:TShiftState;X,Y:Integer);
//var latf, lonf: double;
begin
{if mT <> NIL then
mt.enabled:= not mt.enabled; }
// writeln(TListview(sender).selected.caption);
// actlocation:= copy(TListview(sender).selected.caption,4,20);
//statbar2.panels.items[1].text:= TListview(sender).selected.caption;
writeln(itoa(TListview(sender).itemindex))
// writeln(Tlistview(sender).items[TListview(sender).itemindex].subitems[1]);
statbar2.panels.items[1].text:=
TListview(sender).items[TListview(sender).itemindex].subitems[0];
writeln('itemindex: '+ TListview(sender).items[TListview(sender).itemindex].subitems[1]);
statbar2.hint:= statbar2.panels.items[1].text;
end;
procedure tbtnScanClick(Sender: TObject);
begin
{if mT <> NIL then
mt.enabled:= not mt.enabled; }
writeln(objecttostring(sender))
if isInternet then begin
sr:= GetGeoWeather(removespaces(actlocation), UrlWeatherReport25);
writeln(sr)
end;
end;
const PicPath = '\examples\images\';
procedure EditColumn(Item: TListItem; Col: byte; const Text: string);
begin
if Col = 0 then
Item.Caption:= Text
else begin
while Item.SubItems.Count < Col do
Item.SubItems.Add('');
Item.SubItems[Col -1] := Text;
end;
end;
procedure Change(AListView: TListView; const ARowIndex, AColIndex: Integer;
const ANewContent: string);
var
i: Integer;
vItem: TListItem;
begin
vItem := AListView.Items[ARowIndex];
if AColIndex=0 then
vItem.Caption := ANewContent
else begin
for i := vItem.SubItems.Count to AColIndex+1 do
vItem.SubItems.Add('');
vItem.SubItems[AColIndex] := ANewContent;
end;
end;
procedure TFrm_UpdateClick(Sender: TObject);
begin
{bfrm.canvas.draw(335,30, FPicRed);
actlocation:= myedit.text;
getIPWeatherData(actlocation)
anamtr.value:= atemper;//strtoint(copy(atemper,0,2))
aind.value:= apressure div 15
telelabel.caption:= sr;
apress.value:= apressure;
ahumi.value:= ahumidity; }
ListView_SetTextBkColor(view.handle, $7dcced) //$8deeed) // $9cc123)
if isInternet then begin
sr:= GetGeoWeather(actlocation, UrlWeatherReport25);
writeln('update: '+sr+' '+actlocation)
getMultipleWeather(sr)
ListItem:= view.Items.Add;
AddlistItem(listitem)
SetImageTemperatur(listitem)
listitem.makevisible(false);
//View.Items.Item[0].MakeVisible(false); //scrolls up if necessary
//ListView1.SetFocus; // sets focus on the listview
//Listitem.TopIndex := -1 + ListBox1.Items.Count;
statbar1.panels.items[1].text:= sr;
statbar1.hint:= sr;
// @debug writeln(sr)
end;
//anamtr.value:= anamtr.value-10;
end;
const
N = 31; { Number of points }
Alpha = 0.05; { Significance level }
procedure WriteRegressionResults(X, Y, Ycalc, B : TVector;
V : TMatrix;
Test : TRegTest;
Tc, Fc : Float);
{ ------------------------------------------------------------------
Writes results to screen
------------------------------------------------------------------ }
var
Line1,
Line2 : String; { Separating lines }
Delta : Float; { Residual }
Sr : Float; { Residual standard deviation }
SB : Float; { Standard deviations of parameters }
I : Integer; { Loop variable }
begin
Line1:= StrChar(73, '-');
Line2:= StrChar(43, '=');
WriteLn(Line2);
WriteLn('Linear regression: Y = B(0) + B(1) * X');
WriteLn(Line1);
WriteLn('Parameter Est.value Std.dev. '+
floattostr(100 * (1 - Alpha))+ '% Confidence Interval');
WriteLn(Line1);
for I:= 0 to 1 do begin
SB := Sqrt(V[I][I]);
PrintF('B(%d) %17.8f %17.8f %17.8f ; %17.8f',
[I,B[I],SB,(B[I]- Tc * SB),(B[I] + Tc * SB)])
end;
WriteLn(Line1);
WriteLn('Number of observations : n = '+itoa(N));
with Test do begin
Sr := Sqrt(Vr);
WriteLn('Residual error : s = '+floattoStr(Sr));
WriteLn('Coeffic. of correlation : r = '+floattostr((Sgn(B[1])*Sqrt(R2))));
WriteLn('Coefficient of determination: r2 = '+floattostr(R2));
{WriteLn('Adjusted coeff. of determination : r2a = ', R2a:10:4);
WriteLn('Varic ratio (explained/resid.) : F(', Nu1:3,',', Nu2:3, ')= ',F:10:4);
WriteLn('Critical variance ratio : F(p = ', (1 - Alpha):4:2, ') = ',Fc:10:4);}
end;
WriteLn(Line1);
PrintF(' %-13s %-12s %-12s %-12s %-12s %-12s',
['i','Y obs.','Y calc.','Residual','Std.dev.','Std.res.']);
WriteLn(Line1);
for I := 1 to N do begin
Delta := Y[I] - Ycalc[I];
//WriteLn(I:3, Y[I]:14:4, Ycalc[I]:14:4, Delta:14:4, Sr:14:4, (Delta/ Sr):14:4);
PrintF('B(%d) %12.4f %12.4f %12.4f %12.4f %12.4f',
[I,Y[I],Ycalc[I],Delta,Sr, (Delta / Sr)])
end;
WriteLn(Line2);
end;
procedure AutoScale2(X : TVector; Lb, Ub : Integer; Scale : TScale;
var XMin, XMax, XStep : Float); external 'AutoScale@dmath';
procedure letForecastRegression_Graph(datlist: TStringlist);
var afrm: TForm; acanvas: TCanvas;
B : TVector; { Regression parameters }
XX, YY : TVector; { Data }
Ycalc : TVector; { Computed Y values }
V : TMatrix; { Variance-covariance matrix }
Test : TRegTest; { Statistical tests }
Tc : Float; { Critical t value }
Fc : Float; { Critical F value }
I : Integer; { Loop variable }
Ymin, Ymax, Ystep: float; Scale : TScale;
Ymin2: float;
X : TVector; Lb, Ub : Integer; aScale : TScale; var XMin, XMax, XStep : Float;
begin
{ Dimension arrays }
DimVector(XX, N);
DimVector(YY, N);
DimVector(Ycalc, N);
DimVector(B, 1);
DimMatrix(V, 1, 1);
//InitGraphics( 0, 0);
aFrm:= getForm2(1100,420, clweblightgreen,'weather forecast graphX'); //sizeable!
acanvas:= aFrm.canvas;
acanvas.FillRect(Rect(0, 0, afrm.Width, afrm.Height));
{ Read data }
for I := 1 to N do begin
XX[I] := I /30;
YY[I] := strtofloat(datlist[I])/35;
end;
{ Perform regression }
LinFit(XX, YY, 1, N, B, V);
{ Compute predicted Y values }
for I := 1 to N do
Ycalc[I] := B[0] + B[1] * XX[I];
{ Update variance-covariance matrix and compute statistical tests }
RegTest(YY, Ycalc, 1, N, V, 0, 1, Test);
{ Compute Student's t and Snedecor's F }
//Tc := InvStudent(N - 2, 1 - 0.5 * Alpha);
//Fc := InvSnedecor(1, N - 2, 1 - Alpha);
{ Write results }
WriteRegressionResults(XX, YY, Ycalc, B, V, Test, Tc, Fc);
SetWindow(afrm.canvas, 30, 150, 25, 150, True);
//Procedure AutoScale(X:TVector; Lb,Ub:Int; Scale:TScale; var XMin,XMax,XStep:Float)
Ymin:= -0.5; Ymax:= 0.9; Ystep:= 1;
//AutoScale(X ,Lb, Ub,smNormal,xmin, 5, 4);
//TScaleMode', '(smNormal,smStretch,smScale,smResize,smOptimal, smOptimalScaled )');
//TScale', '( LinScale, LogScale )');
//AutoScale2(Y, 1, N, LinScale, Ymin, Ymax, Ystep);
//SetOxScale2(Linscale, Xmin, Xmax, Xstep);
SetOyScale(LinScale, Ymin, Ymax, Ystep); //for minus -temp
SetGraphTitle('Linear Weather Regression Demo for'+actlocation+' '+datetostr(now));
afrm.caption:= 'Linear Weather Regression Demo for'+actlocation+' '+datetostr(now);
SetOxTitle('X_Time = 5 Days');
SetOyTitle('Y_Temp -10+30');
PlotOxAxis(afrm.canvas);
PlotOyAxis(afrm.canvas);
//PlotGrid(afrm.Canvas, bothGrid);
WriteGraphTitle(afrm.canvas);
//SetClipping(True);
SetLineParam(1, psSolid, 0, clred); { Don't connect points }
//PlotCurve(afrm.canvas,(XX), YY, 1, N-1, 1);
//PlotPoint(afrm.canvas, 10, 20, 3)
PlotCurveWithErrorBars(afrm.canvas,(XX), YY, Ycalc, 1, 1, N-1, 1)
for I := 1 to N do
Ycalc[I] := (B[0] + B[1] * XX[I]);
SetLineParam(1, psSolid, 0, clblue);
PlotCurve(afrm.canvas,(XX), Ycalc, 1, N-1, 1);
writeln('Regression calc & fit done')
end;
procedure TFrm_ForecastClick(Sender: TObject);
var tmps, srt, descript, atemp, aicon: string;
mlist, templist: TStringlist; k: integer;
begin //instance of pview!
{bfrm.canvas.draw(335,30, FPicRed);
actlocation:= myedit.text;
getIPWeatherData(actlocation)
anamtr.value:= atemper;//strtoint(copy(atemper,0,2))
aind.value:= apressure div 15
telelabel.caption:= sr;
apress.value:= apressure;
ahumi.value:= ahumidity; }
if isInternet then begin
srt:= GetGeoWeather(actlocation, UrlWeatherReport25_Forecast);
//StrtoList( s : string; const List : TStrings; const delimiter : char)
mlist:= TStringlist.create;
templist:= TStringlist.create;
Strtolist(srt, mlist, '}')
writeln('Count of forecast list line: '+itoa(mlist.count))
//writeln(mlist.text)
for k:= 0 to mlist.count-1 do begin
if pos('"dt_txt":',mlist.strings[k]) > 0 then
tmps:= mlist.strings[k] ;
if pos('"temp":',mlist.strings[k]) > 0 then
writeln(itoa(k)+tmps+' '+mlist.strings[k]+CRLF);
if pos('"main":',mlist.strings[k]) > 0 then
writeln(itoa(k)+mlist.strings[k]+CRLF);
end;
mlist.free;
writeln('Forecast for: '+mlist.text+' '+actlocation)
writeln('Forecast end report for: '+actlocation)
loadpredictForm;
//getMultipleWeatherForecast(srt)
//ListView_SetTextBkColor(pview.handle, $7dcced) //$8deeed) // $9cc123)
mlist:= TStringlist.create;
Strtolist(srt, mlist, '}')
writeln('Count of forecast list2: '+itoa(mlist.count))
//writeln(mlist.text)
for k:= 0 to mlist.count-2 do begin
if pos('"dt_txt":',mlist.strings[k]) > 0 then begin
//tmps:= itoa(k)+' '+mlist.strings[k] ;
tmps:= copy(mlist.strings[k],pos('"dt_txt":',mlist.strings[k])+10,17)
//if pos('"temp":',mlist.strings[k]) > 0 then
if pos('"temp":',mlist.strings[k+1]) > 0 then begin
tmps:= tmps+' '+mlist.strings[k+1];
//([\d\.\-]+).*
with TPerlRegEx.Create do begin;
Options:= [preCaseLess];
RegEx:= '"temp":([\d\.\-]+){2,}'; // for temperature float
//subject:= copy(mlist.strings[k+1],pos('"temp":',mlist.strings[k+1])+7,6)
subject:= mlist.strings[k+1];
if match then atemp:= copy(groups[0],8,6); //word filter
Free;
end;
{Remember that you have a complete programming language at your disposal.
I've noticed people tend to decide they need to use regex and then forget about
everything else they can do. }
//if pos(',',atemp) > 0 then atemp:= StrReplaceChar(atemp,',','.');
//if pos('"',atemp) > 0 then atemp:= StrReplaceChar(atemp,'"','0');
templist.add((atemp));
end;
if pos('"main":',mlist.strings[k+2]) > 0 then begin
//descript:= mlist.strings[k+2];
descript:= copy(mlist.strings[k+2],pos('"main":',mlist.strings[k+2])+7,60);
aicon:= copy(mlist.strings[k+2],pos('"icon":',mlist.strings[k+2])+8,3)
end;
//getMultipleWeatherForecast(mlist.strings[k]);
ListItem:= pview.Items.Add;
//AddlistItemPredict(listitem)
with listItem do begin
Caption:= actlocation;
//SubItems.Add(wpred.temp+'° hPa: '+wpred.bar+' humid: '
// +wpred.humid+'% ');
SubItems.Add(tmps);
//showmessage(wrec.id)
//anum:=StrToFloat(copy(wpred.temp, 1, 2));
//anum:= ((strtofloat(wrec.tempmax) + strtofloat(wrec.tempmin))/2)
SubItems.Add(descript);
SubItems.Add(atemp);
SetImageTemperaturPredict(listitem, aicon)
end;
end;
{if pos('"temp":',mlist.strings[k]) > 0 then
writeln(itoa(k)+tmps+' '+mlist.strings[k]+CRLF);
if pos('"main":',mlist.strings[k]) > 0 then
writeln(itoa(k)+mlist.strings[k]+CRLF); }
end;
mlist.free;
for it:= 1 to templist.count-1 do write(templist[it]+ ' ');
letForecastRegression_Graph(templist);
templist.Free;
//ListItem:= view.Items.Add;
//AddlistItem(listitem)
//SetImageTemperatur(listitem)
//listitem.makevisible(false); //}
//View.Items.Item[0].MakeVisible(false); //scrolls up if necessary
//ListView1.SetFocus; // sets focus on the listview
//Listitem.TopIndex := -1 + ListBox1.Items.Count;
//statbar2.panels.items[1].text:= srt;
//statbar2.hint:= srt;
// @debug writeln(sr)
end;
//loadpredictForm;
end;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
Key := #0;
actlocation:= removespaces(myedit.text);
//actlocation:= TrimSpacesL(myedit.text);
TFrm_updateclick(self)
if sender is TListview then
writeln('list view return key pressed at: '+(TListview(sender).selected.caption));
//S := Edit1.Text;
//Edit1.Clear;
end;
//writeln('list view key pressed')
end;
function ListView_SetTextColor(hwnd: HWND; clrText: TColorRef): Bool;
begin
Result:= Bool( SendMessage(hwnd, LVM_SETTEXTCOLOR, 0, clrText) );
end;
procedure TMyControl_TriggerHint(Hint: String);
var
Message: TMessage;
FGridHintFlag: boolean;
begin
Self.Hint:= Hint;
if Hint='' then begin
Application.HideHint;
Application.CancelHint;
end
else begin
Application.CancelHint;
FGridHintFlag:=Self.Hint<>'';
Self.Hint:=Hint;
if Hint<>'' then begin
//TWMMouse(Message).Pos:=PointToSmallPoint(ScreenToClient(Mouse.CursorPos));
Application.HintMouseMessage(Self, Message);
end;
end;
end;
Const PBM_SETBARCOLOR = (WM_USER + 9);
Procedure initTabletmode;
var
aMessage: TMessage;
begin
//Application.HintColor := clAqua; // color of your choice
Application.HintColor := $8deeed
Application.HintMouseMessage(Self, aMessage)
Application.HintPause := 250; // 250 mSec before hint is shown
Application.HintHidePause := 13000; // hint disappears after 3 secs
end;
Procedure RegisterHiddenMenu;
var
Comp: TComponent;
begin
//Make a hidden menu item visible
Comp := Application.MainForm.FindComponent('MenuItemName');
if Comp is TMenuItem then
TMenuItem(Comp).Visible := True;
end;
procedure SetImageTemperatur(alistitem: Tlistitem);
begin
setDecimalSeparator('.')
if wrec.temp <> '' then begin
if trunc(strtofloat(wrec.temp)) < 5 then
//if wrec.temp < '5' then
//machine learning
alistitem.imageindex:= random(1)+2;
if trunc(strtofloat(wrec.temp)) < 2 then
//if wrec.temp < '5' then
alistitem.imageindex:= 3;
if (trunc(strtofloat(wrec.temp)) >= 5) and (trunc(strtofloat(wrec.temp)) <= 10) then
//if wrec.temp < '5' then
alistitem.imageindex:= 1;
if trunc(strtofloat(wrec.temp)) >= 11 then
//if wrec.temp < '5' then
alistitem.imageindex:= 0;
if wrec.descript= 'Rain' then
alistitem.imageindex:= 2;
if wrec.descript= 'Thunderstorm' then
alistitem.imageindex:= 2;
if wrec.descript= 'Clouds' then
alistitem.imageindex:= 1;
if wrec.descript= 'Drizzle' then
alistitem.imageindex:= 1;
if wrec.descript= 'Mist' then
alistitem.imageindex:= 1;
if wrec.descript= 'Snow' then
alistitem.imageindex:= 3;
if wrec.descript= 'Haze' then
alistitem.imageindex:= random(1)+1;
end;
end;
procedure SetImageTemperaturPredict(alistitem: Tlistitem; aicon: string);
begin
setDecimalSeparator('.')
(*if wrec.temp <> '' then begin
if trunc(strtofloat(wrec.temp)) < 5 then
//if wrec.temp < '5' then
//machine learning
alistitem.imageindex:= random(1)+2;
if trunc(strtofloat(wrec.temp)) < 2 then
//if wrec.temp < '5' then
alistitem.imageindex:= 3;
if (trunc(strtofloat(wrec.temp)) >= 5) and (trunc(strtofloat(wrec.temp)) <= 10) then
//if wrec.temp < '5' then
alistitem.imageindex:= 1;
if trunc(strtofloat(wrec.temp)) >= 11 then
//if wrec.temp < '5' then
alistitem.imageindex:= 0; *)
case aicon of
'01d','01n': alistitem.imageindex:= 0; //clear
'04d','04n','03n','02n','02d': alistitem.imageindex:= 1; //clouds
'10n','10d': alistitem.imageindex:= 2; //rain
'13d','13n': alistitem.imageindex:= 3; //snow
else alistitem.imageindex:= random(1)+1;
end;
{if wrec.descript= 'Rain' then
alistitem.imageindex:= 2;
if wrec.descript= 'Thunderstorm' then
alistitem.imageindex:= 2;
if wrec.descript= 'Clouds' then
alistitem.imageindex:= 1;
if wrec.descript= 'Mist' then
alistitem.imageindex:= 1;
if wrec.descript= 'Haze' then
alistitem.imageindex:= random(1)+1; }
//end;
end;
//get a real server without async problems and lost file size!
procedure CheckBitmapIcons;
begin
if not fileExists(exepath+'WeatherImageList.dat') then begin
//wGet('http://www.softwareschule.ch/images/texturemap.jpg',PICPATH+'\texturemap.jpg');
// wGet2('http://www.softwareschule.ch/images/weatherimagelist.dat',
// exepath+'WeatherImageList.dat');
//DownloadFile('http://www.softwareschule.ch/images/weatherimagelist.dat',
// exepath+'WeatherImageList.dat')
wGetX2('http://www.kleiner.ch/images/weatherimagelist.txt',
exepath+'WeatherImageList.dat');
ShowmessageBig('second download starts..., please confirm!')
wGetX2('http://www.kleiner.ch/images/weatherimagelist1.txt',
exepath+'WeatherImageList1.dat');
{wGet('http://www.softwareschule.ch/images/WeatherImageList1.dat',
exepath+'WeatherImageList1.dat');
}
end;
writeln('imagelist *.dat has been downloaded at: ' +exepath)
end;
//**************************Form Builder*******************************
Procedure loadForm;
var tB: TTrackBar;
//statBar1: TStatusBar;
NewColumn: TListColumn;
atool: TToolBar;
asr: AnsiString;
//atool: TCoolBar;
ListItem: TListItem;
image, image1, image2, image3: TBitmap;
sunr, suns: string;
begin
setupAnimation;
aFrm:= TForm.Create(self);
//mT:= TTimer.Create(self);
//mt.onTimer:= @TFrm1_timerRedrawTimer;
//mt.interval:= MILLISECONDS;
//mt.free; in on close
with aFrm do begin
Caption:= '********** maXbox Weather Station7 Map: type new+york for 2 names find ***********';
//top:= 30;
height:= 660;
width:= 930;
Position:= poScreenCenter;
formstyle:= fsstayontop;
Icon.LoadFromResourceName(HInstance,'MOON'); //NEWREPORT');
//Color:= clBlack;
onClose:= @TFrm1_closeForm;
//onPaint:= @TFrm1_FormPaint;
Canvas.Pen.color:= clBlue;
Canvas.Pen.Width:= 15;
BorderIcons:= [biSystemMenu, biMinimize];
BorderStyle:= bsSingle;
//borderWidth:= 4;
scaled:= true;
autoscroll:= true;
onMouseDown:= @FormMouseDown;
//Textheight('20');
//activecontrol
Show;
//canvas.brush.bitmap:= getBitmapObject(Exepath+'examples\images\bmp47.bmp');
//Canvas.FillRect(Rect(50,50,500,200));
//canvas.draw(0,200, getbitmap(Exepath+'\examples\citymax.bmp'));
//Show;
end;
with TBitBtn.Create(aFrm) do begin
Parent:= aFrm;
setbounds(560,520,170,65);
caption:= '&Update';
//flat
font.size:= 15;
glyph.LoadFromResourceName(getHINSTANCE,'CL_MPPAUSE');
mXButton(02,02,width, height,15,15,handle);
//event handler
onClick:= @TFrm_UpdateClick;
end;
with TBitBtn.Create(aFrm) do begin
Parent:= aFrm;
setbounds(380,520,170,65);
caption:= '&Forecast';
//flat
font.size:= 15;
glyph.LoadFromResourceName(getHINSTANCE,'VPDOTS'); //TOPASSISTANT');
mXButton(02,02,width, height,15,15,handle);
//event handler
onClick:= @TFrm_ForecastClick;
end;
with TBitBtn.Create(aFrm) do begin
Parent:= aFrm;
setbounds(740,520,170,65);
caption:= '&Close';
font.size:= 15;
glyph.LoadFromResourceName(getHINSTANCE,'CL_MPSTOP');
mXButton(02,02,width, height,15,15,handle);
onClick:= @TFrm1_CloseClick;
end;
tB:= TTrackBar.create(aFrm);
with tB do begin
parent:= aFrm;
setBounds(40,515,230,70);
Min:= 10; Max:= 100
Frequency:= 10
Position:= 1000 div 50;
linesize:= 15;
ThumbLength:= 55;
SetFocus;
OnChange:= @TFrm1_trackSpeedChange;
end;
statbar1:= TStatusBar.Create(aFrm);
with statbar1 do begin
parent:= aFrm;
showhint:= true;
parentcolor:= false;
color:= clred;
//panels.color:= clnavy;
//sizeGrip
hint:= 'this is a Weather LED BoX in maXcalc';
Panels.add;
panels.items[0].width:= 200;
panels.items[0].text:= DateTimeToInternetStr(Now, true);
Panels.add;
panels.items[1].width:= 150;
panels.items[1].text:= '150 get the solution';
end;
atool:= TToolBar.create(aFrm);
//If owner is NIl it is not actually part of the main form.
imagelist1:= TCustomImageList.Create(NIL);
ReadComponentResFile(exepath+'WeatherImageList1.dat', imagelist1);
{image:= getbitmap(exepath+picpath+'red1.bmp');
image1:= getbitmap(exepath+picpath+'green1.bmp');
image2:= getbitmap(exepath+picpath+'yellow1.bmp')
}
with imagelist1 do begin
Height:= 39; Width:= 39;
Add(image,NIL);
Add(image1,NIL);
Add(image2,NIL);
end;
//WriteComponentResFile(exepath+'WeatherImageList1.dat', imagelist1);
imagelist2:= TCustomImageList.Create(aFrm);
// deserialize object stream to imagelist
ReadComponentResFile(exepath+'WeatherImageList.dat',imagelist2);
{image:= getbitmap(exepath+picpath+'red1.bmp')
image1:= getbitmap(exepath+picpath+'green1.bmp');
image2:= getbitmap(exepath+picpath+'yellow1.bmp'); }
{image:= getbitmap(exepath+picpath+'sun1.bmp')
image3:= getbitmap(exepath+picpath+'sun4.bmp');
}
with imagelist2 do begin
Height:= 39; Width:= 39;
Add(image,NIL);
Add(image1,NIL);
Add(image2,NIL);
Add(image3,NIL);
end;
//serialize imagelist object to object stream file
//WriteComponentResFile('WeatherImageList.dat', imagelist2);
with atool do begin
setBounds(10,5,100,80)
Parent:= aFrm;
//Align:= altop;
parentcolor:= false;
ButtonHeight:= 50;
ButtonWidth:= 90;
EdgeInner:= esNone;
EdgeOuter:= esNone;
Flat:= True;
HotImages:= ImageList1;
Images:= ImageList2;
ShowCaptions:= True;
//TabOrder = 0
color:= clnavy;
Transparent:= True;
show;
end;
with TToolbutton.create(atool) do begin
parent:= atool;
//flat:= true;
Caption:= '&Open';
ImageIndex:= 2;
//ParentShowHint:= False
ShowHint:= False
OnClick:= @OpenWeatherList;
end;
with TToolbutton.create(atool) do begin
parent:= atool;
Caption:= '&Add';
ImageIndex:= 1;
//ParentShowHint:= False
ShowHint:= False
OnClick:= @TFrm1_AddClick
end;
with TToolbutton.create(atool) do begin
parent:= atool;
Caption:= '&Scan';
ImageIndex:= 0;
OnClick:= @tbtnScanClick
end;
myEdit:= TEdit.create(aFrm);
with myEdit do begin
parent:= afrm;
text:= ' Klagenfurt';
borderstyle:= bsnone;
setbounds(212,10,250,32);
color:= clweblightblue; //$8deeed //clnavy
font.color:= clwebdarkred; //$7dcced; //$0deeed; //clred;
//font.style:= [fsbold]
font.size:= 18;
//onkeypreview:= true;
//onenter:= @updateClick;
onkeypress:= @Edit1KeyPress;
show
end;
with TColorBox.create(self) do begin
parent:= aFrm;
top:= 10;
left:= 488;
width:= 263;
height:= 50;
items[16];
//autosize:= false;
{selected:= 2
items[selected]; }
font.size:= 14;
onclick:= @TFrm_color1Click;
Show;
//free
end;
DecodeTime(now,hh,mm,ss,ms);
//showmessage(floattostr(mtime))
progbar:= TProgressbar.create(afrm);
with progbar do begin
parent:= aFrm;
Align:= albottom;
{Min:= 0;
Max:= 100;
Step:= 10;}
Max:= (24*60);
//color:= clred; //TColor(random(65100));
position:= tb.position;
Position:= (hh * 60)+mm;
Brush.Color := clTeal;
SendMessage(Handle, PBM_SETBARCOLOR, 0, clYellow);
//onchange:= @TFrm1_progressChange;
end;
{ with TTabbedNotebook.create(aFrm) do begin
parent:= aFrm;
setbounds(10,65,453,120)
end; }
view:= TListview.create(aFrm);
with view do begin
parent:= aFrm;
setbounds(10,65,910,435)
//columns:= listitem
DoubleBuffered:= False
FlatScrollBars:= True
readonly:= false;
gridLines:= true;
RowSelect:= True;
NewColumn:= Columns.Add;
NewColumn.Caption:= 'City:Country';
newColumn.width:= 245;
newcolumn.alignment:= taLeftJustify;
//newcolumn.color //newColumn.autosize:= true;
// newColumn.imageindex:= 1;
NewColumn:= Columns.add;
NewColumn.Caption:= 'Weather Sensor';
newColumn.width:= 420;
//ListItem:= view.Items[1].rows.Add;
//view.Items[1].caption:= 'sensor second';
NewColumn:= Columns.add;
NewColumn.Caption:= 'Description';
newColumn.width:= 180;
NewColumn:= Columns.add;
NewColumn.Caption:= 'FCast';
newColumn.width:= 60;
{sListItem:= view.Items.Add;
slistitem.caption:= 'temp.name';
slistitem.subitems[1].caption:='temp.name'
}
{colums= <
item
AutoSize = True
Caption = 'Content'
ImageIndex = 3
end> }
HotTrack:= True;
HotTrackStyles:= [htHandPoint];
//IconOptions.AutoArrange = True
RowSelect:= True;
//ParentShowHint:= False;
hint:= 'Dblclick for Satellite Map';
ShowHint:= True;
font.size:= 14
SmallImages:= ImageList2;
//StateImages: = ImageList2;
//TabOrder = 4
//ListView_SetTextColor(View.Handle, $123ADA)
//ListView_SetTextBkColor(view.handle, $ADA123)
ListView_SetTextBkColor(view.handle, $8deeed) // $9cc123)
ondblclick:= @listclick;
onmousedown:= @listclick2;
onkeypress:= @edit1KeyPress;
//@test data
{ViewStyle:= vsReport;
for It:= Application.ComponentCount - 1 downto 0 do begin
Temp:= application.Components[It];
begin
ListItem:= view.Items.Add;
ListItem.Caption:= Temp.Name;
//listitem.subitems.add(temp.name)
end;
end;}
viewstyle:= vsreport;
readonly:= false;
//ListItem:= view.Items.Add;
ListItem:= view.Items.Add;
ListItem.Caption:= '801 Cologne';
//ListItem.SubItems.Add(' Add a new city above ');
ListItem.SubItems.Add('Add a new city or town to the list');
ListItem.SubItems.Add('mX 4.7.6.20');
items[0].EditCaption; //
//EditColumn(listitem,0, 'maxbox')
{ListItem:= view.Items.Add;
ListItem.Caption:= '200 Bern city test4';
EditColumn(listitem,1, 'hot images on a coolbar')
EditColumn(listitem,2, 'mX4.6.2.10') }
//update test
{ listitem:= Items.Item[1];
listitem.Caption:='11';
//listitem.SubItems.ValueFromIndex[0]:='22';
//listitem.SubItems.ValueFromIndex[1]:='33';
listitem.SubItems.strings[0]:='22';
listitem.SubItems.strings[1]:='33'; }
if isInternet then begin
sr:= GetGeoWeather('kiruna', UrlWeatherReport25);
//showmessage(sr)
getMultipleWeather(sr)
ListItem:= view.Items.Add;
SetImageTemperatur(listitem)
//listitem.imageindex:= 2
AddlistItem(listitem)
{ListItem2:= view.Items.Add;
SetImageTemperatur(listitem2)
//listitem.imageindex:= 2
AddlistItem(listitem2) }
writeln(sr)
sr:= GetGeoWeather('trieste', UrlWeatherReport25);
getMultipleWeather(sr)
ListItem:= view.Items.Add;
SetImageTemperatur(listitem)
//listitem.imageindex:= 2
AddlistItem(listitem)
writeln(sr)
sr:= GetGeoWeather('koeln', UrlWeatherReport25);
getMultipleWeather(sr)
ListItem:= view.Items.Add;
SetImageTemperatur(listitem)
// listitem.imageindex:= 2
AddlistItem(listitem)
writeln(sr)
getMultipleWeather(GetGeoWeather('klagenfurt', UrlWeatherReport25))
ListItem:= view.Items.Add;
SetImageTemperatur(listitem)
AddlistItem(listitem)
ListView_SetTextBkColor(view.handle, $7dcced) // $9cc123) 0dcced
writeln(sr)
getMultipleWeather(GetGeoWeather('paris', UrlWeatherReport25))
ListItem:= view.Items.Add;
SetImageTemperatur(listitem)
AddlistItem(listitem)
sr:= GetGeoWeather('bern', UrlWeatherReport25);
getMultipleWeather(GetGeoWeather('bern', UrlWeatherReport25))
ListItem:= view.Items.Add;
SetImageTemperatur(listitem)
AddlistItem(listitem)
writeln('bern sunsettest: '+sr)
writeln(copy(sr, pos('sunrise":',sr)+9,10))
sunr:= copy(sr, pos('sunrise":',sr)+9,10);
writeln('bern sunrise: '
+datetimetostr(UnixDateTimeToDelphiDateTime(strtoint(sunr))))
suns:= copy(sr, pos('sunset":',sr)+8,10);
writeln('bern sunset: '
+datetimetostr(UnixDateTimeToDelphiDateTime(strtoint(suns))))
getMultipleWeather(GetGeoWeather('stockholm', UrlWeatherReport25))
ListItem:= view.Items.Add;
SetImageTemperatur(listitem)
AddlistItem(listitem)
getMultipleWeather(GetGeoWeather('havana', UrlWeatherReport25))
ListItem:= view.Items.Add;
SetImageTemperatur(listitem)
AddlistItem(listitem)
getMultipleWeather(GetGeoWeather('brussels', UrlWeatherReport25))
ListItem:= view.Items.Add;
SetImageTemperatur(listitem)
AddlistItem(listitem)
//listitem.imageindex:= 2
//ListItem:= view.Items.Add;
statbar1.panels.items[1].text:= sr;
statbar1.hint:= sr;
end else begin
getMultipleWeather(jsonstr)
ListItem:= view.Items.Add;
with ListItem do begin
Caption:= wrec.id+' '+wrec.city;
SubItems.Add(wrec.temp+' ° temp bar: '+wrec.bar+' of humid: '+wrec.humid+'%');
SubItems.Add(wrec.descript);
imageindex:= 2
end;
statbar1.panels.items[1].text:= jsonstr;
statbar1.hint:= jsonstr;
//AnsiInsert( var dst : AnsiString; const src : AnsiString; index : Integer)
asr:= ansistring(getbigpi);
end;
//This Number: 176 is this ASCII °
//view.subItems[2].caption:= 'sensor second';
{ for it:= 1 to 20 do begin
ListItem:= view.Items.Add;
ListItem.Caption:= getrandomString(40);
end;}
//ViewStyle:=vsReport;
end;
end;
Procedure loadPredictForm;
var //statBar1: TStatusBar;
NewColumn: TListColumn;
asr: AnsiString;
//atool: TCoolBar;
ListItem: TListItem;
begin
aPFrm:= TForm.Create(self);
//mT:= TTimer.Create(self);
//mt.onTimer:= @TFrm1_timerRedrawTimer;
//mt.interval:= MILLISECONDS;
//mt.free; in on close
with aPFrm do begin
Caption:= '********** maXbox Weather Station6 Forecaster ***********';
//top:= 30;
height:= 730; width:= 980;
Position:= poScreenCenter;
formstyle:= fsstayontop;
Icon.LoadFromResourceName(HInstance,'ZHISTOGRAM'); //NEWREPORT');
//Color:= clBlack;
onClose:= @TFrm2_closeForm;
//onPaint:= @TFrm1_FormPaint;
Canvas.Pen.color:= clBlue;
Canvas.Pen.Width:= 10;
BorderIcons:= [biSystemMenu, biMinimize];
BorderStyle:= bsSingle;
//borderWidth:= 4;
scaled:= true;
autoscroll:= true;
Show;
//canvas.brush.bitmap:= getBitmapObject(Exepath+'examples\images\bmp47.bmp');
//Canvas.FillRect(Rect(50,50,500,200));
//canvas.draw(0,200, getbitmap(Exepath+'\examples\citymax.bmp'));
//Show;
end;
pview:= TListview.create(aFrm);
with pview do begin
parent:= aPFrm;
setbounds(10,15,940,660)
//columns:= listitem
DoubleBuffered:= False
FlatScrollBars:= True
readonly:= false;
gridLines:= true;
RowSelect:= True;
NewColumn:= Columns.Add;
NewColumn.Caption:= 'City:Country';
newColumn.width:= 140;
newcolumn.alignment:= taLeftJustify;
//newcolumn.color //newColumn.autosize:= true;
// newColumn.imageindex:= 1;
NewColumn:= Columns.add;
NewColumn.Caption:= 'Weather Forecast Sensor';
newColumn.width:= 515;
//ListItem:= view.Items[1].rows.Add;
//view.Items[1].caption:= 'sensor second';
NewColumn:= Columns.add;
NewColumn.Caption:= 'Description';
newColumn.width:= 200;
NewColumn:= Columns.add;
NewColumn.Caption:= 'TFCast';
newColumn.width:= 60;
{sListItem:= view.Items.Add;
slistitem.caption:= 'temp.name';
slistitem.subitems[1].caption:='temp.name'
}
onmousedown:= @listclickpredict;
HotTrack:= True;
HotTrackStyles:= [htHandPoint];
//IconOptions.AutoArrange = True
RowSelect:= True;
//ParentShowHint:= False;
hint:= 'Dblclick for Detail Map';
ShowHint:= True;
font.size:= 10
SmallImages:= ImageList2;
//StateImages: = ImageList2;
//TabOrder = 4
//ListView_SetTextColor(View.Handle, $123ADA)
//ListView_SetTextBkColor(view.handle, $ADA123)
ListView_SetTextBkColor(pview.handle, $8deeed) // $9cc123)
//@test data
{ViewStyle:= vsReport;
end;}
viewstyle:= vsreport;
readonly:= false;
//ListItem:= view.Items.Add;
ListItem:= pview.Items.Add;
ListItem.Caption:= '801 Forecast List Line';
//ListItem.SubItems.Add(' Add a new city above ');
ListItem.SubItems.Add('Add a new city or town to the list');
ListItem.SubItems.Add('mX 4.7.6.20');
items[0].EditCaption; //
//EditColumn(listitem,0, 'maxbox')
{ListItem:= view.Items.Add;
ListItem.Caption:= '200 Bern city test4';
EditColumn(listitem,1, 'hot images on a coolbar')
EditColumn(listitem,2, 'mX4.6.2.10') }
end;
statbar2:= TStatusBar.Create(apFrm);
with statbar2 do begin
simplepanel:= false;
parent:= apFrm;
showhint:= true;
parentcolor:= false;
color:= clred;
//panels.color:= clnavy;
//sizeGrip
hint:= 'this is a Weather Forecast in maXcalc';
Panels.add;
panels.items[0].width:= 200;
panels.items[0].text:= DateTimeToInternetStr(Now, true);
Panels.add;
panels.items[1].width:= 150;
panels.items[1].text:= '150 get the forecaster solution';
end;
if isInternet then begin
sr:= GetGeoWeather('kiruna', UrlWeatherReport25);
//showmessage(sr)
getMultipleWeather(sr)
ListItem:= pview.Items.Add;
SetImageTemperatur(listitem)
//listitem.imageindex:= 2
AddlistItem(listitem)
writeln(sr)
sr:= GetGeoWeather('trieste', UrlWeatherReport25);
getMultipleWeather(sr)
ListItem:= pview.Items.Add;
SetImageTemperatur(listitem)
//listitem.imageindex:= 2
AddlistItem(listitem)
writeln(sr)
end else begin
getMultipleWeather(jsonstr)
ListItem:= pview.Items.Add;
with ListItem do begin
Caption:= wrec.id+' '+wrec.city;
SubItems.Add(wrec.temp+' ° temp bar: '+wrec.bar+' of humid: '+wrec.humid+'%');
SubItems.Add(wrec.descript);
imageindex:= 2
end;
//statbar2.panels.items[1].text:= jsonstr;
statbar2.hint:= pview.hint; //jsonstr;
//AnsiInsert( var dst : AnsiString; const src : AnsiString; index : Integer)
end;
statbar2.hint:= pview.hint
//This Number: 176 is this ASCII °
//view.subItems[2].caption:= 'sensor second';
//ViewStyle:=vsReport;
//end;
end;
Procedure sunrisesetRouter(lon, lat: float);
var rs: TSTRiseSetRec;
UT: TSTDateTimeRec; iday: TDateTime;
begin
UT.D:= currentdate;
UT.T:= currenttime;
//UT.T:= incdays(UT.D,1);
iday:= date;
iday:= adddays(iday,1);
writeln(sttimetotimestring('hh:mm',UT.T,false))
for it:= 0 to 25 do begin
//iday:= adddays(iday,1);
//UT.d:= iday;
ut.d:= stincdate(ut.d, it,0,0);
rs:= sunriseset(UT.d, lon, lat);
with rs do begin
if orise >-1 then
writeln('sunrise of '+stdatetodatestring('dd.mm.yyyy',ut.d,false)+' : '
+#9+sttimetotimestring('hh:mm',
orise, false)+#9+ ' sunSet: '+
sttimetotimestring('hh:mm', oset, false));
end;
end;
end;
var UserSpaceAvail, TotalSpaceAvail, DiskSize: Comp; {disk size}
begin //@main
initTabletmode;
CheckBitmapIcons;
if not InitGraphics(950, 310) then { 640x480 16 color }
begin
Writeln('Unable to set stat graphic mode');
//Exit;
end; //*)
loadForm;
//loadViewForm;
if decimalseparator <> '.' then
showmessageBig('you might have a decimal problem - we help you to switch to .');
writeln('decimalseparator: '+decimalseparator)
setdecimalseparator('.')
with maxform1 do begin
with memo2 do begin
color:= clblack;
font.color:= clweborange;
font.size:= 16;
end;
end;
//TFrm_r1Click(self); //view.ViewStyle:=vsReport;
//TFrm_r2Click(Self); //TFrm_T1Click(Self);
if GetDiskSpace('C',UserSpaceAvail,TotalSpaceAvail,DiskSize) then
printF('UserSpaceAvail: %d TotalSpaceAvail: %d DiskSize: %d',
[UserSpaceAvail div 1024,TotalSpaceAvail div 1024,DiskSize div 1024]);
// maxform1.statusbar1.showhint:= true;
with TClientSocket.create(self) do begin
//writeln(TClientSocket(socket).host);
writeln('TCustomWinSocket host: '+TCustomWinSocket(Socket).remotehost);
writeln('TCustomWinSocket port: '+intToStr(TCustomWinSocket(Socket).remoteport));
Free
end;
//progbar.Position:= (hh * 60)+mm;
writeln(itoa((hh * 60)+mm))
//writeln(getASCII)
//property Socket: TClientWinSocket read FClientSocket;}
writeln('köln time: '+datetimetostr(UnixDateTimeToDelphiDateTime(1446127190)))
writeln('havana time: '+datetimetostr(UnixDateTimeToDelphiDateTime(1446125586)))
writeln('Sunriseset table of Bern, CH')
sunrisesetRouter(7.45,46.95);
//writeln(getascii)
if isInternet then begin
writeln('GetRealIP2_string: '+GetRealIP2)
writeln('Weather Report date: '+DateTimeToInternetStr(now, true))
write('Local Weather Sensor: '+localcity+' '+localcountry)
sr:= GetGeoWeather(localcity+','+localcountry, UrlWeatherReport25);
getMultipleWeather(sr)
if localcity <> '' then
myedit.text:= localcity+','+localcountry else
myedit.text:= ' Klagenfurt';
end;
//init
zoomf:= 16;
raiselastwin32;
print(getAscii) //8 ¦ 8
End.
--------------------------------------------------------------------------------
Doc: https://docs.mapbox.com/help/glossary/access-token/
var
aFrm: TForm;
mT: TTimer;
tB: TTrackBar;
statBar1: TStatusBar;
http://www.whoishostingthis.com/resources/delphi/
//**************************Form Builder*******************************
procedure loadForm;
var tB: TTrackBar;
begin
aFrm:= TForm.Create(self);
//mT:= TTimer.Create(self);
//mt.onTimer:= @TFrm1_timerRedrawTimer;
//mt.interval:= MILLISECONDS;
//mt.free; in on close
with aFrm do begin
Caption:= '********** Form Template ***********';
height:= 510;
width:= 700;
Position:= poScreenCenter;
//Color:= clBlack;
onClose:= @TFrm1_closeForm;
//onPaint:= @TFrm1_FormPaint;
Canvas.Pen.color:= clBlue;
Canvas.Pen.Width:= 15;
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
Show;
canvas.brush.bitmap:= getBitmapObject(Exepath+'examples\images\bmp47.bmp');
Canvas.FillRect(Rect(600,300,100,100));
end;
with TBitBtn.Create(aFrm) do begin
Parent:= aFrm;
setbounds(310,390,150,55);
caption:= 'Pause';
font.size:= 12;
glyph.LoadFromResourceName(getHINSTANCE,'CL_MPPAUSE');
mXButton(05,05,width, height,12,12,handle);
//event handler
onClick:= @TFrm1_PauseClick;
end;
with TBitBtn.Create(aFrm) do begin
Parent:= aFrm;
setbounds(490,390,150, 55);
caption:= 'Close';
font.size:= 12;
glyph.LoadFromResourceName(getHINSTANCE,'CL_MPSTOP');
mXButton(05,05,width, height,12,12,handle);
onClick:= @TFrm1_CloseClick;
end;
tB:= TTrackBar.create(aFrm);
with tB do begin
parent:= aFrm;
setBounds(40,402,230,40);
Min:= 10; Max:= 100
Frequency:= 10
Position:= 1000 div 50;
linesize:= 4;
ThumbLength:= 30;
SetFocus;
OnChange:= @TFrm1_trackSpeedChange;
end;
statbar1:= TStatusBar.Create(aFrm);
with statbar1 do begin
parent:= aFrm;
showhint:= true;
//sizegrip
hint:= 'this is a LED BoX';
Panels.add;
panels.items[0].width:= 200;
panels.items[0].text:= '200';
Panels.add;
panels.items[1].width:= 150;
panels.items[1].text:= '150';
end;
end;
object mainForm1: TmainForm1
Left = 227
Top = 124
HelpContext = 1
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
BorderWidth = 1
Caption = 'maTRIx by maX'
ClientHeight = 501
ClientWidth = 746
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
Menu = MainMenu1
OldCreateOrder = False
Position = poDesktopCenter
Scaled = False
OnActivate = FormActivate
OnCreate = FormCreate
OnDestroy = FormDestroy
PixelsPerInch = 96
TextHeight = 13
object Splitter1: TSplitter
Left = 177
Top = 41
Width = 2
Height = 421
Cursor = crHSplit
ResizeStyle = rsLine
end
object StatusBar1: TStatusBar
Left = 0
Top = 482
Width = 746
Height = 19
Panels = <>
SimplePanel = True
SimpleText = 'StatusLine: OK'
SizeGrip = False
end
object CoolBar1: TCoolBar
Left = 0
Top = 0
Width = 746
Height = 41
Bands = <
item
object ToolBar1: TToolBar
Left = 9
Top = 0
Width = 729
Height = 49
Align = alClient
ButtonHeight = 36
ButtonWidth = 69
EdgeInner = esNone
EdgeOuter = esNone
Flat = True
HotImages = ImageList1
Images = ImageList2
ShowCaptions = True
TabOrder = 0
Transparent = True
object tbtnClose: TToolButton
Left = 0
Top = 0
Caption = '&Close'
ImageIndex = 1
ParentShowHint = False
ShowHint = False
OnClick = tbtnCloseClick
end
object ToolButton2: TToolButton
Left = 69
Top = 0
Width = 8
Caption = 'ToolButton2'
ImageIndex = 1
Style = tbsSeparator
end
object tbtnGenerator: TToolButton
Left = 77
Top = 0
Caption = '&Generator'
ImageIndex = 2
OnClick = MovingAverage1Click
end
object tbtnOptions: TToolButton
Left = 146
Top = 0
Caption = '&Options'
ImageIndex = 3
Style = tbsCheck
OnClick = tbtnOptionsClick
end
object tbtnTrans: TToolButton
Left = 215
Top = 0
Caption = '&Transaction'
ImageIndex = 0
OnClick = tbtnTransClick
end
object ToolButton5: TToolButton
Left = 284
Top = 0
Width = 13
Caption = 'ToolButton5'
ImageIndex = 3
Style = tbsSeparator
end
end
end
object progBar: TProgressBar
Left = 0
Top = 462
Width = 746
Height = 20
Align = alBottom
Min = 0
Max = 100
Smooth = True
TabOrder = 2
Visible = False
end
object TreeView1: TTreeView
Left = 0
Top = 41
Width = 177
Height = 421
Align = alLeft
AutoExpand = True
Images = ImageList4
Indent = 19
ReadOnly = True
TabOrder = 3
OnChange = TreeView1Change
end
object view: TListView
Left = 179
Top = 41
Width = 567
Height = 421
Align = alClient
Columns = <
item
AutoSize = True
Caption = 'Content'
ImageIndex = 3
end>
HotTrack = True
HotTrackStyles = [htHandPoint]
IconOptions.AutoArrange = True
RowSelect = True
ParentShowHint = False
ShowHint = True
SmallImages = ImageList5
StateImages = ImageList5
TabOrder = 4
ViewStyle = vsReport
OnClick = viewClick
end
object MainMenu1: TMainMenu
Left = 240
Top = 136
object Datei1: TMenuItem
Caption = '&File'
object mnOpentree: TMenuItem
Caption = '&Open Tree'
OnClick = mnOpentreeClick
end
object Beenden1: TMenuItem
Caption = '&Close'
OnClick = tbtnCloseClick
end
end
object Registry1: TMenuItem
Caption = '&Tools'
object Fractals: TMenuItem
Caption = 'Fractals...'
OnClick = FractalsClick
end
object Generator: TMenuItem
Caption = '&Chart Generator...'
OnClick = MovingAverage1Click
end
object Verschlsseln1: TMenuItem
Caption = '&Encrypt/ Decrypt'
object mnEncrypt: TMenuItem
Caption = '&Encrypt'
OnClick = mnEncryptClick
end
object mnDecrypt: TMenuItem
Caption = '&Decrypt'
OnClick = mnDecryptClick
end
end
object MATestCase1: TMenuItem
Caption = 'MA TestCase'
OnClick = MATestCase1Click
end
object mnSearch: TMenuItem
Caption = '&Search in Memo'
OnClick = mnSearchClick
end
object mnRegistryReader: TMenuItem
Caption = '&Registry Reader'
object r1: TMenuItem
Caption = 'Run'
OnClick = r1Click
end
object r2: TMenuItem
Caption = 'RunOnce'
OnClick = r2Click
end
object R3: TMenuItem
Caption = 'RunOnceEX'
OnClick = R3Click
end
object R4: TMenuItem
Caption = 'RunServices'
OnClick = R4Click
end
object R5: TMenuItem
Caption = 'RunServicesOnce'
OnClick = R5Click
end
object T1: TMenuItem
Caption = 'TypedURLs'
OnClick = T1Click
end
end
end
object info1: TMenuItem
Caption = '&Info'
OnClick = info1Click
object options: TMenuItem
Caption = '&Options'
OnClick = tbtnOptionsClick
end
end
end
object ImageList1: TImageList
Left = 504
Top = 72
object ImageList3: TImageList
Left = 196
Top = 210
The set of APIs within a device family is broken down into subdivisions known as API contracts. See Device families.
This reference topic enumerates for Windows 10 all of the API contracts and their versions, with links to the and the APIs within each, with links to topics with more info on each particular API contract.
http://www.streamlineicons.com/img/preview/preview-free-pack.svg
http://sm-artists.com/?page_id=925
https://thecattlecrew.wordpress.com/2014/10/31/analyse-der-software-qualitat-mit-sonarqube/
GetRealIP2_string: {
"ip": "85.4.239.55",
"hostname": "55.239.4.85.dynamic.wline.res.cust.swisscom.ch",
"city": "Tann",
"region": "Zurich",
"country": "CH",
"loc": "47.2682,8.8479",
"org": "AS3303 Swisscom (Switzerland) Ltd",
"postal": "8632"
}
Weather Report date: Fri, 18 Dec 2015 10:50:16 +0100
Local Weather Sensor: Tann CH
Weather Id:802 is Clouds in: Tann at 6.35 of 1027 pressure with 100% humidity
http://www.poertschach.at/de/wetter/detail#_webcams
Havana, La Habana, Cuba | 23° 7' 48"N, 82° 23' 24"W
coord of Havana :CU : -82.36 23.14
Cologne, North Rhine-Westphalia, Germany | 50.95°N, 6.97°E
coord of Koeln :DE : 6.96 50.94
http://www.wolframalpha.com/input/?i=coordante+sydney,+au
Klagenfurt, Carinthia, Austria | 46.62°N, 14.31°E
coord of Klagenfurt :AT : 46.62 14.31
https://translate.google.com/?sl=de&tl=en&text=praktikum%20in%20zwei%20gruppen%20zusammen%0AGruppe%201%20OpenSSL%2C%20Signtool%20mit%20Python%2C%20Bj%C3%B6rn%0AGruppe%202%20OpenSSL%20im%20Tor%20Browser%20als%20Onion%2C%20Sandro%0A%0AGrundschutz%3A%0AVerf%C3%BCgbarkeit%0AVerl%C3%A4sslichkeit%20(Integrit%C3%A4t)%0AVertraulichkeit%0AVerbindlichkeit%0A%0ARisiko%20bei%20%20Password%20fischen%0AR%20%3D%2020%20*%2070%20%3D%2014%0AR%20RussRoul%20%20%3D%201%2F6%20*%20100%20%3D%201%2F6%20%3D%200%2C27%3F%0A%2B%20positive%205%2F6%20*%20100%20%3D%205%2F6%0ASicherheit%20%3D%201%20-%20Risiko%20%3D%2086%20%3D%20Schwellenwert%20%3E%2070%0ARestrisiko%20%3D%2014%0Aunpredictability%0A%0Aerstelle%20eine%20konfusionsmatrix%20mit%20den%205%20f%C3%A4llen%0A%20%20%20%20%20%200%20%20%20%20%20%20%20%20%20%20%201%0A0%20%20%20%20%20%20%20%20%20%20I%20%20%20%20%20%20%0A%20%20%20%20%20---------------%0A1%20%20%20%20%20%20%20%20%20%20I%20%20%20%20%200%0A%20&op=translate