Version:0.9 StartHTML:0000000105 EndHTML:0000012764 StartFragment:0000001037 EndFragment:0000012748
program CompressServices2;
//Purpose: stores a zip file header with a memory stream, locs= 84
//preparation of compress/decompress folders and entropy theory
Const
AZIPFILE = 'maxzip2memory.zip';
procedure CreateEmptyZipFile;
var i: integer;
zipfile: wideString;
//ezip: TByteArray; =(80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
ezip: TByteDynArray;
ms: TMemoryStream;
begin
SetLength(ezip, 25); //for ZIP Header
ezip[0]:=80; ezip[1]:=75; ezip[2]:=5; ezip[3]:=6;
for i:= 4 to 23 do ezip[i]:= 0;
zipfile:= exepath+'examples\'+AZIPFILE;
// create a new empty ZIP file
ms:= TMemoryStream.Create;
writeln(ObjectToStr(ms)); //debug pointer
try
//ms.WriteBuffer array of byte of dynamic size;
ms.WriteBufferABD(ezip, length(ezip));
ms.SaveToFile(Zipfile);
finally
ms.Free;
end;
end;
//***************************Services Provider**********************************
procedure XCompress(azipfolder, azipfile: string);
begin
with TShellZip.Create do begin
zipfile:= azipfile;
ZipFolder(azipfolder);
Free;
end;
//compress
end;
procedure XDeCompress(azipfolder, azipfile: string);
begin
with TShellZip.Create do begin
zipfile:= azipfile;
if DirectoryExists(azipfolder)= false then
CreateDir(azipfolder);
UnZip(azipfolder);
Free;
end;
//decompress
end;
var
inlist: TStringlist;
i: integer;
begin
CreateEmptyZipFile;
//Compress(exepath+'examples\earthplay2', exepath+'examples\maxboxziptest2.zip');
Writeln('Threads count: '+inttoStr(NumProcessThreads));
//DeCompress(exepath+'examples\Decompress2', exepath+'examples\maxboxziptest2.zip');
writeln(inttoStr64(minint64));
writeln(inttoStr64(maxint64));
writeln(inttoStr64(mincardinal));
writeln(inttoStr64(maxcardinal));
writeln(inttoStr(minnativeint));
writeln(inttoStr(maxnativeint));
{inlist:= TStringlist.create;
JCLLocalesInfoList(inlist, 2);
for i:= 1 to inlist.count-1 do
writeln(inlist[i]);
inlist.Free;}
End.
-------------------------------------------------
{if QueryInterface(IIncomeInt, incomeIntRef) = S_OK
then begin //_addRef; test
SetRate(strToInt(edtZins.text),
strToInt(edtJahre.text));
cIncome:=strTofloat(edtBetrag.text);
cIncome:= GetIncome(cIncome);
end;}
IInterface = interface
['{00000000-0000-0000-C000-000000000046}']
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end;
IIncomeInt = interface (IUnknown)
['{DBB42A04-E60F-41EC-870A-314D68B6913C}']
function GetIncome(const aNetto: Extended): Extended; stdcall;
function GetIncome2(const aNetto: Currency): Currency; stdcall;
function GetRate: Extended;
function queryDLLInterface(var queryList: TStringList): TStringList;
stdcall;
function queryDLLInterfaceTwo(var queryList: TStringList): TStringList;
stdcall;
procedure SetRate(const aPercent, aYear: integer); stdcall;
//property Rate: Double read GetRate;
end;
Internet of Things
Für das Internet der Dinge entwickeln
Viele sehen im Internet of Things vor allem eines: ein gigantisches Potenzial für neue Geschäftsmodelle. Bald wird die ganze Welt programmierbar sein. Jedes EBike, jede Waschmaschine, Kaffeemaschine, jeder Blutdruckmesser oder jede Armbanduhr wird irgendwie vernetzt sein. Geräte werden untereinander als Physical Computing kommunizieren, sich aufeinander abstimmen. Man geht also nicht mehr ins Internet, sondern das Internet ist Teil von uns, Sensoren messen meinen Blutzucker und berechnen so die nächste Krankenkassenprämie. Es kann auch sein, dass intelligente Gebäude so störanfällig werden, dass der Fahrstuhl des Grauens Wirklichkeit wird. Nette Spielereien oder der Anfang einer neuen solargetriebenen Manufakturindustrie inklusive 3D-Drucker und Roboter in der Altersbetreuung
Max Kleiner bespricht, wie mit Android ein Arduino Board gesteuert wird:
REST als Command Protocol
Web to Serial Applications
Microcontrollers
Aktoren und Sensoren
RFIDs sind überall
Extern: Settings-User
Extern: Konfiguration-Admin
Intern: Literals-Developer
Identifizierung
• Konfigurationselemente wie Pfad oder Default-Werte
• Doppelte Elemente (String oder numerische Literals)
• Beziehungen der Konfigurationselemente
• Software Version innerhalb der Config Einstellung
• Baseline und zentrale Elemente
• Aufnahme von Konfigurationselementen
• Bibliotheken / Komponenten / Frameworks etc.