1
0
mirror of https://bitbucket.org/Dennis07/lina-components.git synced 2025-08-24 21:49:04 +02:00

Version 1.0 DEV 1.0

Signed-off-by: Dennis07 <den.goehlert@t-online.de>
This commit is contained in:
Dennis07
2014-08-31 19:11:20 +02:00
commit 39c0916f1c
63 changed files with 4152 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
program pExample;
uses
Vcl.Forms,
uMain in 'uMain.pas' {fmMain};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.Title := 'Example';
Application.CreateForm(TfmMain, fmMain);
Application.Run;
end.

View File

@@ -0,0 +1,176 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{2E891DD2-BDFD-4240-86C4-F159A689E482}</ProjectGuid>
<ProjectVersion>15.3</ProjectVersion>
<FrameworkType>VCL</FrameworkType>
<MainSource>pExample.dpr</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>1</TargetedPlatforms>
<AppType>Application</AppType>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
<Base_Win64>true</Base_Win64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
<Cfg_1_Win32>true</Cfg_1_Win32>
<CfgParent>Cfg_1</CfgParent>
<Cfg_1>true</Cfg_1>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
<Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
<DCC_E>false</DCC_E>
<DCC_N>false</DCC_N>
<DCC_S>false</DCC_S>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Locale>1033</VerInfo_Locale>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<DCC_UsePackage>frxDB19;FireDACASADriver;FireDACSqliteDriver;bindcompfmx;DBXSqliteDriver;AbbreviaVCL;vcldbx;FireDACPgDriver;FireDACODBCDriver;VampyreImagingPackage.D2009;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;FireDACCommon;bindcomp;frx19;TeeDB;vclib;inetdbbde;DBXInterBaseDriver;GR32_DSGN_RSXE5;DataSnapCommon;MiscrosoftScriptControls;pkCindyDERDXE5;Tee;vclFireDAC;xmlrtl;svnui;ibxpress;DbxCommonDriver;SVATimer_DXE5;vclimg;IndyProtocols;dbxcds;DBXMySQLDriver;PieLib;FireDACCommonDriver;MetropolisUILiveTile;djsonrt;bindengine;vclactnband;vcldb;soaprtl;bindcompdbx;vcldsnap;bindcompvcl;pkCindyPackDXE5;TeeUI;FMXTee;vclie;pkCindyIEDXE5;vclshlctrls;fmxFireDAC;FireDACADSDriver;vcltouch;pkCindyDBCtrlsPackDXE5;pkCindyDBXDXE5;LINA_D_XE5;CustomIPTransport;SynEdit_RXE5;vclribbon;VclSmp;FireDAC;dsnap;IndyIPServer;Intraweb;fmxase;vcl;IndyCore;VCLRESTComponents;GR32_RSXE5;IndyIPCommon;CloudService;CodeSiteExpressPkg;dsnapcon;FireDACIBDriver;DCEF_XE5;inet;DebenuPDFLibraryLite;fmxobj;FmxTeeUI;FireDACMySQLDriver;vclx;inetdbxpress;webdsnap;svn;fmxdae;frxe19;RESTComponents;bdertl;FireDACMSAccDriver;adortl;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>FireDACASADriver;FireDACSqliteDriver;bindcompfmx;DBXSqliteDriver;AbbreviaVCL;FireDACPgDriver;FireDACODBCDriver;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;FireDACCommon;bindcomp;vclib;DBXInterBaseDriver;DataSnapCommon;vclFireDAC;xmlrtl;ibxpress;DbxCommonDriver;vclimg;IndyProtocols;dbxcds;DBXMySQLDriver;FireDACCommonDriver;MetropolisUILiveTile;bindengine;vclactnband;vcldb;soaprtl;bindcompdbx;vcldsnap;bindcompvcl;vclie;vclshlctrls;fmxFireDAC;FireDACADSDriver;vcltouch;LINA_D_XE5;CustomIPTransport;SynEdit_RXE5;vclribbon;VclSmp;FireDAC;dsnap;IndyIPServer;Intraweb;fmxase;vcl;IndyCore;VCLRESTComponents;IndyIPCommon;CloudService;dsnapcon;FireDACIBDriver;inet;fmxobj;FireDACMySQLDriver;vclx;inetdbxpress;webdsnap;fmxdae;RESTComponents;FireDACMSAccDriver;adortl;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_DebugDCUs>true</DCC_DebugDCUs>
<DCC_Optimize>false</DCC_Optimize>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
<DCC_RemoteDebug>true</DCC_RemoteDebug>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
<VerInfo_Locale>1033</VerInfo_Locale>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<DCC_RemoteDebug>false</DCC_RemoteDebug>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
<DCC_DebugInformation>0</DCC_DebugInformation>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="uMain.pas">
<Form>fmMain</Form>
<FormType>dfm</FormType>
</DCCReference>
<BuildConfiguration Include="Release">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType/>
<BorlandProject>
<Delphi.Personality>
<VersionInfo>
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">0</VersionInfo>
<VersionInfo Name="Release">0</VersionInfo>
<VersionInfo Name="Build">0</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
<VersionInfo Name="PreRelease">False</VersionInfo>
<VersionInfo Name="Special">False</VersionInfo>
<VersionInfo Name="Private">False</VersionInfo>
<VersionInfo Name="DLL">False</VersionInfo>
<VersionInfo Name="Locale">1031</VersionInfo>
<VersionInfo Name="CodePage">1252</VersionInfo>
</VersionInfo>
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName"/>
<VersionInfoKeys Name="FileDescription"/>
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="InternalName"/>
<VersionInfoKeys Name="LegalCopyright"/>
<VersionInfoKeys Name="LegalTrademarks"/>
<VersionInfoKeys Name="OriginalFilename"/>
<VersionInfoKeys Name="ProductName"/>
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="Comments"/>
<VersionInfoKeys Name="CFBundleName"/>
<VersionInfoKeys Name="CFBundleDisplayName"/>
<VersionInfoKeys Name="UIDeviceFamily"/>
<VersionInfoKeys Name="CFBundleIdentifier"/>
<VersionInfoKeys Name="CFBundleVersion"/>
<VersionInfoKeys Name="CFBundlePackageType"/>
<VersionInfoKeys Name="CFBundleSignature"/>
<VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/>
<VersionInfoKeys Name="UISupportedInterfaceOrientations"/>
<VersionInfoKeys Name="CFBundleExecutable"/>
<VersionInfoKeys Name="CFBundleResourceSpecification"/>
<VersionInfoKeys Name="LSRequiresIPhoneOS"/>
<VersionInfoKeys Name="CFBundleInfoDictionaryVersion"/>
<VersionInfoKeys Name="CFBundleDevelopmentRegion"/>
<VersionInfoKeys Name="package"/>
<VersionInfoKeys Name="label"/>
<VersionInfoKeys Name="versionCode"/>
<VersionInfoKeys Name="versionName"/>
<VersionInfoKeys Name="persistent"/>
<VersionInfoKeys Name="restoreAnyVersion"/>
<VersionInfoKeys Name="installLocation"/>
<VersionInfoKeys Name="largeHeap"/>
<VersionInfoKeys Name="theme"/>
</VersionInfoKeys>
<Source>
<Source Name="MainSource">pExample.dpr</Source>
</Source>
<Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k190.bpl">Microsoft Office 2000 Beispiele für gekapselte Komponenten für Automatisierungsserver</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dclofficexp190.bpl">Microsoft Office XP Beispiele für gekapselte Komponenten für Automation Server</Excluded_Packages>
</Excluded_Packages>
</Delphi.Personality>
<Deployment/>
<Platforms>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
</Project>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<BorlandProject/>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,199 @@
object fmMain: TfmMain
Left = 0
Top = 0
Caption = 'LinaComponents "TScriptManager" Example'
ClientHeight = 369
ClientWidth = 707
Color = clBtnFace
Constraints.MinHeight = 360
Constraints.MinWidth = 670
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
Menu = MainMenu
OldCreateOrder = False
Position = poScreenCenter
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object SynEdit: TSynEdit
Left = 0
Top = 0
Width = 707
Height = 304
Align = alClient
ActiveLineColor = clInfoBk
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Style = []
PopupMenu = PopupMenu
TabOrder = 0
Gutter.Font.Charset = DEFAULT_CHARSET
Gutter.Font.Color = clWindowText
Gutter.Font.Height = -11
Gutter.Font.Name = 'Courier New'
Gutter.Font.Style = []
Highlighter = SynPasSyn
Lines.Strings = (
'program Example;'
''
'var'
' Frm: TForm;'
''
'begin'
' //Show form'
' Frm := TForm.Create(Application);'
' Frm.Position := poScreenCenter;'
' Frm.BorderStyle := bsDialog;'
' Frm.Caption := '#39'Demo'#39';'
' Frm.Show;'
'end.')
WantTabs = True
FontSmoothing = fsmNone
end
object ListBox: TListBox
Left = 0
Top = 304
Width = 707
Height = 65
Align = alBottom
BevelKind = bkSoft
BevelWidth = 4
ItemHeight = 13
TabOrder = 1
end
object MainMenu: TMainMenu
Left = 8
Top = 8
object miFile: TMenuItem
Caption = 'File'
object miFileOpen: TMenuItem
Caption = 'Open...'
ShortCut = 16463
OnClick = miFileOpenClick
end
object miFileSave: TMenuItem
Caption = 'Save...'
ShortCut = 16467
OnClick = miFileSaveClick
end
object miFileSep: TMenuItem
Caption = '-'
end
object miFileClose: TMenuItem
Caption = 'Close'
OnClick = miFileCloseClick
end
end
object miEdit: TMenuItem
Caption = 'Edit'
OnClick = miEditClick
object miEditUndo: TMenuItem
Caption = 'Undo'
ShortCut = 16474
OnClick = miEditUndoClick
end
object miEditRedo: TMenuItem
Caption = 'Redo'
ShortCut = 16473
OnClick = miEditRedoClick
end
object miEditSep: TMenuItem
Caption = '-'
end
object miEditSelectAll: TMenuItem
Caption = 'Select all'
OnClick = miEditSelectAllClick
end
end
object miRun: TMenuItem
Caption = 'Run'
object miRunCompileExecute: TMenuItem
Caption = 'Compile && execute'
ShortCut = 16466
OnClick = miRunCompileExecuteClick
end
object miRunLibrary: TMenuItem
AutoCheck = True
Caption = 'Load libraries'
Checked = True
OnClick = miRunLibraryClick
end
end
object miInfo: TMenuItem
Caption = 'Info'
object miInfoAbout: TMenuItem
Caption = 'About...'
OnClick = miInfoAboutClick
end
end
end
object SynPasSyn: TSynPasSyn
Options.AutoDetectEnabled = False
Options.AutoDetectLineLimit = 0
Options.Visible = False
AsmAttri.Foreground = clMaroon
CommentAttri.Foreground = clGreen
DirectiveAttri.Foreground = clPurple
KeyAttri.Foreground = clNavy
NumberAttri.Foreground = clTeal
FloatAttri.Foreground = clTeal
HexAttri.Foreground = clTeal
StringAttri.Foreground = clTeal
CharAttri.Foreground = clTeal
SymbolAttri.Foreground = clGray
Left = 40
Top = 8
end
object ScriptManager: TScriptManager
OnReturn = ScriptManagerReturn
ReturnMode = srAll
ReturnStyle = srName
VarSelf = Owner
Libraries = [slClasses, slControls, slStdCtrls, slForms, slDateUtils, slComObj, slDB, slCustom]
UsePreProcessor = True
Left = 40
Top = 40
end
object OpenTextFileDialog: TOpenTextFileDialog
Filter = 'Source Files (*.pas)|*.pas|Include Files (*.inc)|*.inc'
Left = 72
Top = 8
end
object SaveTextFileDialog: TSaveTextFileDialog
Filter = 'Source Files (*.pas)|*.pas|Include Files (*.inc)|*.inc'
Left = 72
Top = 40
end
object PopupMenu: TPopupMenu
Left = 8
Top = 40
object miPopupSelectAll: TMenuItem
Caption = 'Select all'
ShortCut = 16449
OnClick = miPopupSelectAllClick
end
object miPopupSep: TMenuItem
Caption = '-'
end
object miPopupCopy: TMenuItem
Caption = 'Copy'
ShortCut = 16451
OnClick = miPopupCopyClick
end
object miPopupCut: TMenuItem
Caption = 'Cut'
ShortCut = 16472
OnClick = miPopupCutClick
end
object miPopupPaste: TMenuItem
Caption = 'Paste'
ShortCut = 16470
OnClick = miPopupPasteClick
end
end
end

View File

@@ -0,0 +1,193 @@
unit uMain;
//////////////////////////////////////
/// Lina Script Manager Example ///
/// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. ///
//////////////////////////////////////
interface
{ Dies ist ein Beispielprojekt, um den Umgang und die m�gliche Verwendeng der
TScriptManager-Komponente von LinaComponents zu veranschaulichen.
Es ben�tigt die SynEdit-Komponenten, um kompiliert werden zu k�nnen.
Es darf als Grundlage f�r eingene Projekte ohne vorherige Einwilligung
verwendet werden, solange mindestens eine LinaComponents-Unit im Projekt
verarbeitet wird.
WICHTIG: Im Gegensatz zur Entwicklung der LinaComponents selbst wurde bei
diesem Beispielprojekt keinerlei R�cksicht auf Abw�rtskompatibilit�t
genommen. Dieses Beispielprogramm wurde in Embarcadero Delphi XE5
erstellt, entwickelt und kompiliert und k�nnte bei �lteren Delphi-
Versionen zu Kompilierungsfehlern f�hren. }
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, SynEdit, SynEditHighlighter,
SynHighlighterPas, Vcl.StdCtrls, uBase, uScriptMgr, Vcl.ExtDlgs;
type
TfmMain = class(TForm)
MainMenu: TMainMenu;
miFile: TMenuItem;
miFileOpen: TMenuItem;
miFileSave: TMenuItem;
miFileSep: TMenuItem;
miFileClose: TMenuItem;
miRun: TMenuItem;
miInfo: TMenuItem;
miInfoAbout: TMenuItem;
SynEdit: TSynEdit;
SynPasSyn: TSynPasSyn;
ScriptManager: TScriptManager;
ListBox: TListBox;
miEdit: TMenuItem;
miEditUndo: TMenuItem;
miEditRedo: TMenuItem;
OpenTextFileDialog: TOpenTextFileDialog;
SaveTextFileDialog: TSaveTextFileDialog;
miRunCompileExecute: TMenuItem;
miEditSep: TMenuItem;
miEditSelectAll: TMenuItem;
miRunLibrary: TMenuItem;
PopupMenu: TPopupMenu;
miPopupSelectAll: TMenuItem;
miPopupCopy: TMenuItem;
miPopupPaste: TMenuItem;
miPopupCut: TMenuItem;
miPopupSep: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure miInfoAboutClick(Sender: TObject);
procedure miFileCloseClick(Sender: TObject);
procedure miEditClick(Sender: TObject);
procedure miEditUndoClick(Sender: TObject);
procedure miEditRedoClick(Sender: TObject);
procedure miFileOpenClick(Sender: TObject);
procedure miFileSaveClick(Sender: TObject);
procedure miRunCompileExecuteClick(Sender: TObject);
procedure miEditSelectAllClick(Sender: TObject);
procedure miRunLibraryClick(Sender: TObject);
procedure miPopupSelectAllClick(Sender: TObject);
procedure miPopupCopyClick(Sender: TObject);
procedure miPopupCutClick(Sender: TObject);
procedure miPopupPasteClick(Sender: TObject);
procedure ScriptManagerReturn(Sender: TObject; const Msg: string);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
fmMain: TfmMain;
implementation
{$R *.dfm}
procedure TfmMain.FormCreate(Sender: TObject);
begin
ScriptManager.VarApplication := Application;
ScriptManager.ReturnTarget := ListBox.Items;
end;
procedure TfmMain.miInfoAboutClick(Sender: TObject);
begin
ScriptManager.About.AboutDlg;
end;
procedure TfmMain.miPopupCopyClick(Sender: TObject);
begin
SynEdit.CopyToClipboard;
end;
procedure TfmMain.miPopupCutClick(Sender: TObject);
begin
SynEdit.CutToClipboard;
end;
procedure TfmMain.miPopupPasteClick(Sender: TObject);
begin
SynEdit.PasteFromClipboard;
end;
procedure TfmMain.miPopupSelectAllClick(Sender: TObject);
begin
miEditSelectAll.Click;
end;
procedure TfmMain.miFileCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfmMain.miRunCompileExecuteClick(Sender: TObject);
begin
ListBox.Items.Clear;
ScriptManager.CodeAssign(SynEdit.Lines);
if miRunLibrary.Checked = False then
begin
ScriptManager.VarSelf := nil;
ScriptManager.VarApplication := nil;
end;
ScriptManager.CompileAndExecute;
end;
procedure TfmMain.miEditClick(Sender: TObject);
begin
miEditUndo.Enabled := (SynEdit.UndoList.ItemCount > 0);
miEditRedo.Enabled := (SynEdit.RedoList.ItemCount > 0);
end;
procedure TfmMain.miRunLibraryClick(Sender: TObject);
begin
if miRunLibrary.Checked = True then
begin
ScriptManager.Libraries := [slClasses,slControls,slStdCtrls,slForms,slDateUtils,slComObj,slDB,slCustom];
end else
begin
ScriptManager.Libraries := [];
end;
end;
procedure TfmMain.ScriptManagerReturn(Sender: TObject; const Msg: string);
begin
ListBox.TopIndex := ListBox.Items.Count - 1;
end;
procedure TfmMain.miFileOpenClick(Sender: TObject);
begin
if OpenTextFileDialog.Execute then
begin
SynEdit.Lines.LoadFromFile(OpenTextFileDialog.FileName);
SynEdit.UndoList.Clear;
SynEdit.RedoList.Clear;
end;
end;
procedure TfmMain.miEditRedoClick(Sender: TObject);
begin
SynEdit.Redo;
end;
procedure TfmMain.miFileSaveClick(Sender: TObject);
begin
if SaveTextFileDialog.Execute then
begin
SynEdit.Lines.SaveToFile(SaveTextFileDialog.FileName);
SynEdit.UndoList.Clear;
SynEdit.RedoList.Clear;
end;
end;
procedure TfmMain.miEditSelectAllClick(Sender: TObject);
begin
SynEdit.SelectAll;
end;
procedure TfmMain.miEditUndoClick(Sender: TObject);
begin
SynEdit.Undo;
end;
end.

View File

@@ -0,0 +1,15 @@
program pExample;
uses
Vcl.Forms,
uMain in 'uMain.pas' {fmMain};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.Title := 'Example';
Application.CreateForm(TfmMain, fmMain);
Application.Run;
end.

View File

@@ -0,0 +1,176 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{D28E4737-637C-4A11-9D4B-624FB1C78C89}</ProjectGuid>
<ProjectVersion>15.3</ProjectVersion>
<FrameworkType>VCL</FrameworkType>
<MainSource>pExample.dpr</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>1</TargetedPlatforms>
<AppType>Application</AppType>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
<Base_Win64>true</Base_Win64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
<Cfg_1_Win32>true</Cfg_1_Win32>
<CfgParent>Cfg_1</CfgParent>
<Cfg_1>true</Cfg_1>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
<DCC_E>false</DCC_E>
<DCC_N>false</DCC_N>
<DCC_S>false</DCC_S>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
<VerInfo_Locale>1033</VerInfo_Locale>
<DCC_UsePackage>frxDB19;FireDACASADriver;FireDACSqliteDriver;bindcompfmx;DBXSqliteDriver;AbbreviaVCL;vcldbx;FireDACPgDriver;FireDACODBCDriver;VampyreImagingPackage.D2009;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;FireDACCommon;bindcomp;frx19;TeeDB;vclib;inetdbbde;DBXInterBaseDriver;GR32_DSGN_RSXE5;DataSnapCommon;MiscrosoftScriptControls;pkCindyDERDXE5;Tee;vclFireDAC;xmlrtl;svnui;ibxpress;DbxCommonDriver;SVATimer_DXE5;vclimg;IndyProtocols;dbxcds;DBXMySQLDriver;PieLib;FireDACCommonDriver;MetropolisUILiveTile;djsonrt;bindengine;vclactnband;vcldb;soaprtl;bindcompdbx;vcldsnap;bindcompvcl;pkCindyPackDXE5;TeeUI;FMXTee;vclie;pkCindyIEDXE5;vclshlctrls;fmxFireDAC;FireDACADSDriver;vcltouch;pkCindyDBCtrlsPackDXE5;pkCindyDBXDXE5;LINA_D_XE5;CustomIPTransport;SynEdit_RXE5;vclribbon;VclSmp;FireDAC;dsnap;IndyIPServer;Intraweb;fmxase;vcl;IndyCore;VCLRESTComponents;GR32_RSXE5;IndyIPCommon;CloudService;CodeSiteExpressPkg;dsnapcon;FireDACIBDriver;DebenuPDFLibraryLite;inet;FmxTeeUI;fmxobj;DCEF_XE5;FireDACMySQLDriver;vclx;inetdbxpress;webdsnap;svn;fmxdae;frxe19;RESTComponents;bdertl;FireDACMSAccDriver;adortl;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>FireDACASADriver;FireDACSqliteDriver;bindcompfmx;DBXSqliteDriver;AbbreviaVCL;FireDACPgDriver;FireDACODBCDriver;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;FireDACCommon;bindcomp;vclib;DBXInterBaseDriver;DataSnapCommon;vclFireDAC;xmlrtl;ibxpress;DbxCommonDriver;vclimg;IndyProtocols;dbxcds;DBXMySQLDriver;FireDACCommonDriver;MetropolisUILiveTile;bindengine;vclactnband;vcldb;soaprtl;bindcompdbx;vcldsnap;bindcompvcl;vclie;vclshlctrls;fmxFireDAC;FireDACADSDriver;vcltouch;LINA_D_XE5;CustomIPTransport;SynEdit_RXE5;vclribbon;VclSmp;FireDAC;dsnap;IndyIPServer;Intraweb;fmxase;vcl;IndyCore;VCLRESTComponents;IndyIPCommon;CloudService;dsnapcon;FireDACIBDriver;inet;fmxobj;FireDACMySQLDriver;vclx;inetdbxpress;webdsnap;fmxdae;RESTComponents;FireDACMSAccDriver;adortl;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_DebugDCUs>true</DCC_DebugDCUs>
<DCC_Optimize>false</DCC_Optimize>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
<DCC_RemoteDebug>true</DCC_RemoteDebug>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
<VerInfo_Locale>1033</VerInfo_Locale>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<DCC_RemoteDebug>false</DCC_RemoteDebug>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
<DCC_DebugInformation>0</DCC_DebugInformation>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="uMain.pas">
<Form>fmMain</Form>
<FormType>dfm</FormType>
</DCCReference>
<BuildConfiguration Include="Release">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType/>
<BorlandProject>
<Delphi.Personality>
<VersionInfo>
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">0</VersionInfo>
<VersionInfo Name="Release">0</VersionInfo>
<VersionInfo Name="Build">0</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
<VersionInfo Name="PreRelease">False</VersionInfo>
<VersionInfo Name="Special">False</VersionInfo>
<VersionInfo Name="Private">False</VersionInfo>
<VersionInfo Name="DLL">False</VersionInfo>
<VersionInfo Name="Locale">1031</VersionInfo>
<VersionInfo Name="CodePage">1252</VersionInfo>
</VersionInfo>
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName"/>
<VersionInfoKeys Name="FileDescription"/>
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="InternalName"/>
<VersionInfoKeys Name="LegalCopyright"/>
<VersionInfoKeys Name="LegalTrademarks"/>
<VersionInfoKeys Name="OriginalFilename"/>
<VersionInfoKeys Name="ProductName"/>
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="Comments"/>
<VersionInfoKeys Name="CFBundleName"/>
<VersionInfoKeys Name="CFBundleDisplayName"/>
<VersionInfoKeys Name="UIDeviceFamily"/>
<VersionInfoKeys Name="CFBundleIdentifier"/>
<VersionInfoKeys Name="CFBundleVersion"/>
<VersionInfoKeys Name="CFBundlePackageType"/>
<VersionInfoKeys Name="CFBundleSignature"/>
<VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/>
<VersionInfoKeys Name="UISupportedInterfaceOrientations"/>
<VersionInfoKeys Name="CFBundleExecutable"/>
<VersionInfoKeys Name="CFBundleResourceSpecification"/>
<VersionInfoKeys Name="LSRequiresIPhoneOS"/>
<VersionInfoKeys Name="CFBundleInfoDictionaryVersion"/>
<VersionInfoKeys Name="CFBundleDevelopmentRegion"/>
<VersionInfoKeys Name="package"/>
<VersionInfoKeys Name="label"/>
<VersionInfoKeys Name="versionCode"/>
<VersionInfoKeys Name="versionName"/>
<VersionInfoKeys Name="persistent"/>
<VersionInfoKeys Name="restoreAnyVersion"/>
<VersionInfoKeys Name="installLocation"/>
<VersionInfoKeys Name="largeHeap"/>
<VersionInfoKeys Name="theme"/>
</VersionInfoKeys>
<Source>
<Source Name="MainSource">pExample.dpr</Source>
</Source>
<Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k190.bpl">Microsoft Office 2000 Beispiele für gekapselte Komponenten für Automatisierungsserver</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dclofficexp190.bpl">Microsoft Office XP Beispiele für gekapselte Komponenten für Automation Server</Excluded_Packages>
</Excluded_Packages>
</Delphi.Personality>
<Deployment/>
<Platforms>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
</Project>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<BorlandProject>
<Transactions>
<Transaction>1899.12.30 00:00:00.000.957,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.333,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.028,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.554,C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Example\TWinFile\uMain.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.634,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.554,C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.dfm=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Example\TWinFile\uMain.dfm</Transaction>
<Transaction>1899.12.30 00:00:00.000.484,C:\Users\Dennis G\Documents\RAD Studio\Projekte\Project1.dproj=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Example\TWinFile\pExample.dproj</Transaction>
<Transaction>1899.12.30 00:00:00.000.824,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.832,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
</Transactions>
</BorlandProject>

Binary file not shown.

Binary file not shown.

Binary file not shown.

163
Example/TWinFile/uMain.dfm Normal file
View File

@@ -0,0 +1,163 @@
object fmMain: TfmMain
Left = 0
Top = 0
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
Caption = 'LinaComponents "TWinFile" Example'
ClientHeight = 257
ClientWidth = 434
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
PixelsPerInch = 96
TextHeight = 13
object laOtherFiles: TLabel
Left = 8
Top = 144
Width = 162
Height = 13
AutoSize = False
Caption = 'PAS && DPR files in this directory:'
end
object laOtherFolders: TLabel
Left = 176
Top = 144
Width = 162
Height = 13
AutoSize = False
Caption = 'Folders in this directory:'
end
object edPath: TEdit
Left = 8
Top = 8
Width = 249
Height = 21
TabOrder = 0
OnChange = edPathChange
end
object miBrowse: TButton
Left = 263
Top = 8
Width = 75
Height = 21
Caption = 'Browse...'
TabOrder = 1
OnClick = miBrowseClick
end
object lbOtherFiles: TListBox
Left = 8
Top = 163
Width = 162
Height = 86
ItemHeight = 13
TabOrder = 2
end
object gbProperties: TGroupBox
Left = 8
Top = 35
Width = 325
Height = 94
Caption = 'File properties'
TabOrder = 3
object leFileName: TLabeledEdit
Left = 63
Top = 24
Width = 106
Height = 21
EditLabel.Width = 49
EditLabel.Height = 13
EditLabel.Caption = 'File name:'
LabelPosition = lpLeft
ReadOnly = True
TabOrder = 0
end
object leFileExt: TLabeledEdit
Left = 268
Top = 24
Width = 45
Height = 21
EditLabel.Width = 70
EditLabel.Height = 13
EditLabel.Caption = 'File extension:'
LabelPosition = lpLeft
ReadOnly = True
TabOrder = 1
end
object leFolderName: TLabeledEdit
Left = 63
Top = 59
Width = 106
Height = 21
EditLabel.Width = 51
EditLabel.Height = 13
EditLabel.Caption = 'File folder:'
LabelPosition = lpLeft
ReadOnly = True
TabOrder = 2
end
end
object lbOtherFolders: TListBox
Left = 176
Top = 163
Width = 162
Height = 86
ItemHeight = 13
TabOrder = 4
end
object pnButtons: TPanel
Left = 345
Top = 0
Width = 89
Height = 257
Align = alRight
TabOrder = 5
object laExecuteMode: TLabel
Left = 8
Top = 144
Width = 73
Height = 13
AutoSize = False
Caption = 'Mode:'
end
object btExecute: TButton
Left = 8
Top = 224
Width = 75
Height = 25
Caption = 'Execute'
TabOrder = 0
OnClick = btExecuteClick
end
object cbExecuteSafe: TCheckBox
Left = 8
Top = 201
Width = 73
Height = 17
Caption = 'Safe exec.'
TabOrder = 1
end
object coExecuteMode: TComboBox
Left = 8
Top = 163
Width = 73
Height = 21
Style = csDropDownList
ItemIndex = 0
TabOrder = 2
Text = 'Open'
Items.Strings = (
'Open'
'Edit')
end
end
object OpenDialog: TOpenDialog
Title = 'Select a file anywhere on your system'
Left = 400
Top = 8
end
end

116
Example/TWinFile/uMain.pas Normal file
View File

@@ -0,0 +1,116 @@
unit uMain;
//////////////////////////////////////
/// Lina File Tools Example ///
/// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. ///
//////////////////////////////////////
interface
{ Dies ist ein Beispielprojekt, um den Umgang und die m�gliche Verwendeng der
TWinFile-Klasse und einiger uFileTools-Methoden von LinaComponents zu
veranschaulichen.
Es darf als Grundlage f�r eingene Projekte ohne vorherige Einwilligung
verwendet werden, solange mindestens eine LinaComponents-Unit im Projekt
verarbeitet wird.
WICHTIG: Im Gegensatz zur Entwicklung der LinaComponents selbst wurde bei
diesem Beispielprojekt keinerlei R�cksicht auf Abw�rtskompatibilit�t
genommen. Dieses Beispielprogramm wurde in Embarcadero Delphi XE5
erstellt, entwickelt und kompiliert und k�nnte bei �lteren Delphi-
Versionen zu Kompilierungsfehlern f�hren. }
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFileTools, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TfmMain = class(TForm)
edPath: TEdit;
miBrowse: TButton;
lbOtherFiles: TListBox;
gbProperties: TGroupBox;
leFileName: TLabeledEdit;
leFileExt: TLabeledEdit;
leFolderName: TLabeledEdit;
laOtherFiles: TLabel;
lbOtherFolders: TListBox;
laOtherFolders: TLabel;
pnButtons: TPanel;
btExecute: TButton;
cbExecuteSafe: TCheckBox;
OpenDialog: TOpenDialog;
coExecuteMode: TComboBox;
laExecuteMode: TLabel;
procedure edPathChange(Sender: TObject);
procedure miBrowseClick(Sender: TObject);
procedure btExecuteClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
fmMain: TfmMain;
implementation
{$R *.dfm}
procedure TfmMain.btExecuteClick(Sender: TObject);
var
CurrentFile: TWinFile;
begin
if FileExists(edPath.Text) then
begin
CurrentFile := TWinFile.Create(edPath.Text);
try
case coExecuteMode.ItemIndex of
0: CurrentFile.ExecuteMode := feOpen;
1: CurrentFile.ExecuteMode := feEdit;
end;
if cbExecuteSafe.Checked = True then
begin
CurrentFile.SafeExecute;
end else
begin
CurrentFile.Execute;
end;
finally
CurrentFile.Free;
end;
end;
end;
procedure TfmMain.edPathChange(Sender: TObject);
var
CurrentFile: TWinFile;
begin
if FileExists(edPath.Text) then
begin
CurrentFile := TWinFile.Create(edPath.Text);
try
leFileName.Text := CurrentFile.GetFileName(False);
leFileExt.Text := CurrentFile.GetExtension(False);
leFolderName.Text := CurrentFile.GetFolderName;
lbOtherFolders.Items.Clear;
ListFolders(CurrentFile.GetPath,lbOtherFolders.Items);
lbOtherFiles.Items.Clear;
ListFiles(CurrentFile.GetPath,lbOtherFiles.Items,['*.pas','*.dpr'],[fnExtension]);
finally
CurrentFile.Free;
end;
end;
end;
procedure TfmMain.miBrowseClick(Sender: TObject);
begin
if OpenDialog.Execute then
begin
edPath.Text := OpenDialog.FileName;
end;
end;
end.

View File

@@ -0,0 +1,2 @@
== Version 1.0 ====================================================
(initial release version)

4
Information/Credits.txt Normal file
View File

@@ -0,0 +1,4 @@
The official version of "Lina Components" with all its belongings,
elements and features is maintained by Dennis G�hlert.
Special thanks go to Sebastian J�nicke for his great help finding
solutions for countless problems.

13
Information/License.txt Normal file
View File

@@ -0,0 +1,13 @@
"Lina Components" is free open-source software and may be used for
both personal, public purposes. It can be used non-commercially for
commercial purposes without additional limitations of usability.
It is available under "Mozilla Public License v2.0".
A copy of the current version can be found in "MPL20.txt" file.
You can optain the current version online from www.mozilla.org.
For a list of all authors who contributed to this project see:
"Credits.txt" file.
INFO: Even if the code contains copyright marks or references,
they are overwritten by this document!

30
Information/Manual.txt Normal file
View File

@@ -0,0 +1,30 @@
== Requirements ===================================================
For the compatibility version, you need to have one of these Delphi
versions installed:
- Delphi 7
- Delphi 2005
- Delphi 2006 *
- Delphi 2007
- Delphi 2009
- Delphi 2010
- Delphi XE
- Delphi XE2
- Delphi XE3
- Delphi XE4
- Delphi XE5
- Delphi XE6
*) The code will run under Turbo-Delphi 2006, but the components
won't be available in the components palett of the personal
version.
== Installation ===================================================
1. Add the "{...}\Source" and the "{...}\Source\Compiled" Folders
to your application's library path
2. Open the corresponding packe for your Delphi version located in
{...}\Package\{DELPHI_...}\{LINA_D_...}.dpk
3. Right-click on the package and compile it
4. Right-click on the package and build it
5. Right-click on the package and install it
6. Close the package

View File

@@ -0,0 +1,373 @@
Mozilla Public License Version 2.0
==================================
1. Definitions
--------------
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.
1.5. "Incompatible With Secondary Licenses"
means
(a) that the initial Contributor has attached the notice described
in Exhibit B to the Covered Software; or
(b) that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the
terms of a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.
1.10. "Modifications"
means any of the following:
(a) any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered
Software; or
(b) any new file in Source Code Form that contains any Covered
Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
2. License Grants and Conditions
--------------------------------
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
(a) for any code that a Contributor has removed from Covered Software;
or
(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
3. Responsibilities
-------------------
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and
(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
5. Termination
--------------
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an "as is" *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************
************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, indirect, *
* special, incidental, or consequential damages of any character *
* including, without limitation, damages for lost profits, loss of *
* goodwill, work stoppage, computer failure or malfunction, or any *
* and all other commercial damages or losses, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party's negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************
8. Litigation
-------------
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
9. Miscellaneous
----------------
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
10. Versions of the License
---------------------------
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
-------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.

View File

@@ -0,0 +1,54 @@
package LINA_D_XE5;
{$R *.res}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$DESCRIPTION 'Lina Components'}
{$IMPLICITBUILD ON}
{$R '..\..\Resource\Compiled\uBattery.dcr'}
{$R '..\..\Resource\Compiled\uFrmCtrls.dcr'}
{$R '..\..\Resource\Compiled\uLocalMgr.dcr'}
{$R '..\..\Resource\Compiled\uScriptMgr.dcr'}
{$R '..\..\Resource\Compiled\uVirtObj.dcr'}
requires
rtl,
vcl,
dbrtl,
PascalScript_Core_D19;
contains
uBase in '..\..\Source\uBase.pas',
uBattery in '..\..\Source\uBattery.pas',
uCrypt in '..\..\Source\uCrypt.pas',
uFileTools in '..\..\Source\uFileTools.pas',
uFrmCtrls in '..\..\Source\uFrmCtrls.pas',
uLocalMgr in '..\..\Source\uLocalMgr.pas',
uScriptMgr in '..\..\Source\uScriptMgr.pas',
uSysTools in '..\..\Source\uSysTools.pas',
uVirtObj in '..\..\Source\uVirtObj.pas';
end.

View File

@@ -0,0 +1,207 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{605C75AC-974B-44E9-997A-211A42CE323E}</ProjectGuid>
<MainSource>LINA_D_XE5.dpk</MainSource>
<ProjectVersion>15.3</ProjectVersion>
<FrameworkType>VCL</FrameworkType>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>3</TargetedPlatforms>
<AppType>Package</AppType>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='OSX32' and '$(Base)'=='true') or '$(Base_OSX32)'!=''">
<Base_OSX32>true</Base_OSX32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
<Base_Win64>true</Base_Win64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
<Cfg_1_Win32>true</Cfg_1_Win32>
<CfgParent>Cfg_1</CfgParent>
<Cfg_1>true</Cfg_1>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_CBuilderOutput>All</DCC_CBuilderOutput>
<GenDll>true</GenDll>
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
<GenPackage>true</GenPackage>
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
<DCC_E>false</DCC_E>
<DCC_N>false</DCC_N>
<DCC_S>false</DCC_S>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_OSX32)'!=''">
<DCC_UsePackage>rtl;dbrtl;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_UsePackage>rtl;vcl;dbrtl;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>rtl;vcl;dbrtl;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_DebugDCUs>true</DCC_DebugDCUs>
<DCC_Optimize>false</DCC_Optimize>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
<DCC_RemoteDebug>true</DCC_RemoteDebug>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
<DCC_DcuOutput>..\..\Source\Compiled\</DCC_DcuOutput>
<VerInfo_Keys>CompanyName=Dennis Göhlert a.o.;FileDescription=Lina Components;FileVersion=1.0.0.0;InternalName=;LegalCopyright=2014;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<DCC_Description>Lina Components</DCC_Description>
<DCC_RemoteDebug>false</DCC_RemoteDebug>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
<DCC_DebugInformation>0</DCC_DebugInformation>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="..\..\Resource\Compiled\uBattery.dcr"/>
<DCCReference Include="..\..\Resource\Compiled\uFrmCtrls.dcr"/>
<DCCReference Include="..\..\Resource\Compiled\uLocalMgr.dcr"/>
<DCCReference Include="..\..\Resource\Compiled\uScriptMgr.dcr"/>
<DCCReference Include="..\..\Resource\Compiled\uVirtObj.dcr"/>
<DCCReference Include="rtl.dcp"/>
<DCCReference Include="vcl.dcp"/>
<DCCReference Include="dbrtl.dcp"/>
<DCCReference Include="PascalScript_Core_D19.dcp"/>
<DCCReference Include="..\..\Source\uBase.pas"/>
<DCCReference Include="..\..\Source\uBattery.pas"/>
<DCCReference Include="..\..\Source\uCrypt.pas"/>
<DCCReference Include="..\..\Source\uFileTools.pas"/>
<DCCReference Include="..\..\Source\uFrmCtrls.pas"/>
<DCCReference Include="..\..\Source\uLocalMgr.pas"/>
<DCCReference Include="..\..\Source\uScriptMgr.pas"/>
<DCCReference Include="..\..\Source\uSysTools.pas"/>
<DCCReference Include="..\..\Source\uVirtObj.pas"/>
<BuildConfiguration Include="Release">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>Package</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<VersionInfo>
<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">0</VersionInfo>
<VersionInfo Name="Release">0</VersionInfo>
<VersionInfo Name="Build">0</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
<VersionInfo Name="PreRelease">False</VersionInfo>
<VersionInfo Name="Special">False</VersionInfo>
<VersionInfo Name="Private">False</VersionInfo>
<VersionInfo Name="DLL">False</VersionInfo>
<VersionInfo Name="Locale">1031</VersionInfo>
<VersionInfo Name="CodePage">1252</VersionInfo>
</VersionInfo>
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName"/>
<VersionInfoKeys Name="FileDescription"/>
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="InternalName"/>
<VersionInfoKeys Name="LegalCopyright"/>
<VersionInfoKeys Name="LegalTrademarks"/>
<VersionInfoKeys Name="OriginalFilename"/>
<VersionInfoKeys Name="ProductName"/>
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="Comments"/>
<VersionInfoKeys Name="CFBundleName"/>
<VersionInfoKeys Name="CFBundleDisplayName"/>
<VersionInfoKeys Name="UIDeviceFamily"/>
<VersionInfoKeys Name="CFBundleIdentifier"/>
<VersionInfoKeys Name="CFBundleVersion"/>
<VersionInfoKeys Name="CFBundlePackageType"/>
<VersionInfoKeys Name="CFBundleSignature"/>
<VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/>
<VersionInfoKeys Name="UISupportedInterfaceOrientations"/>
<VersionInfoKeys Name="CFBundleExecutable"/>
<VersionInfoKeys Name="CFBundleResourceSpecification"/>
<VersionInfoKeys Name="LSRequiresIPhoneOS"/>
<VersionInfoKeys Name="CFBundleInfoDictionaryVersion"/>
<VersionInfoKeys Name="CFBundleDevelopmentRegion"/>
<VersionInfoKeys Name="package"/>
<VersionInfoKeys Name="label"/>
<VersionInfoKeys Name="versionCode"/>
<VersionInfoKeys Name="versionName"/>
<VersionInfoKeys Name="persistent"/>
<VersionInfoKeys Name="restoreAnyVersion"/>
<VersionInfoKeys Name="installLocation"/>
<VersionInfoKeys Name="largeHeap"/>
<VersionInfoKeys Name="theme"/>
</VersionInfoKeys>
<Source>
<Source Name="MainSource">LINA_D_XE5.dpk</Source>
</Source>
<Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k190.bpl">Microsoft Office 2000 Beispiele für gekapselte Komponenten für Automatisierungsserver</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dclofficexp190.bpl">Microsoft Office XP Beispiele für gekapselte Komponenten für Automation Server</Excluded_Packages>
</Excluded_Packages>
</Delphi.Personality>
<Deployment/>
<Platforms>
<Platform value="OSX32">False</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">True</Platform>
</Platforms>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
</Project>

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<BorlandProject>
<Transactions>
<Transaction>1899.12.30 00:00:00.000.525,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uCrypt.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.584,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uVirtObj.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.555,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uBase.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.518,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uBattery.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.648,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uScriptMgr.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.196,=rtl.dcp</Transaction>
<Transaction>1899.12.30 00:00:00.000.686,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\uSysTools.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.621,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uLinaTest.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.577,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uBattery.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.633,C:\Users\Dennis\Documents\RAD Studio\Projekte\Package1.dproj=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\LINA_D_XE5.dproj</Transaction>
<Transaction>1899.12.30 00:00:00.000.318,=vcl.dcp</Transaction>
<Transaction>1899.12.30 00:00:00.000.556,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uLocalMgr.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.414,C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uLinaTest.pas=</Transaction>
<Transaction>1899.12.30 00:00:00.000.535,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uFileTools.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.566,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uScriptMgr.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.592,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uFileTools.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.799,=PascalScript_Core_D19.dcp</Transaction>
<Transaction>1899.12.30 00:00:00.000.857,=PascalScript_Core_D19.dcp</Transaction>
<Transaction>1899.12.30 00:00:00.000.546,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uFrmCtrls.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.325,=dbrtl.dcp</Transaction>
<Transaction>1899.12.30 00:00:00.000.633,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uLocalMgr.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.576,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uSysTools.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.672,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\uFrmCtrls.pas</Transaction>
<Transaction>1899.12.30 00:00:00.000.809,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Resource\Lina.rc</Transaction>
<Transaction>1899.12.30 00:00:00.000.681,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Resource\Lina.rc=</Transaction>
<Transaction>1899.12.30 00:00:00.000.508,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uBase.pas</Transaction>
</Transactions>
<ProjectSortOrder AutoSort="0" SortType="0">
<File Path="..\..\..\LinaComponents"/>
<File Path="..\..\Resource"/>
<File Path="..\..\Resource\Compiled"/>
<File Path="..\..\Resource\Compiled\uBattery.dcr"/>
<File Path="..\..\Resource\Compiled\uFrmCtrls.dcr"/>
<File Path="..\..\Resource\Compiled\uLocalMgr.dcr"/>
<File Path="..\..\Resource\Compiled\uScriptMgr.dcr"/>
<File Path="..\..\Resource\Compiled\uVirtObj.dcr"/>
<File Path="..\..\Source"/>
<File Path="..\..\Source\uBase.pas"/>
<File Path="..\..\Source\uBattery.pas"/>
<File Path="..\..\Source\uCrypt.pas"/>
<File Path="..\..\Source\uFileTools.pas"/>
<File Path="..\..\Source\uFrmCtrls.pas"/>
<File Path="..\..\Source\uLocalMgr.pas"/>
<File Path="..\..\Source\uScriptMgr.pas"/>
<File Path="..\..\Source\uSysTools.pas"/>
<File Path="..\..\Source\uVirtObj.pas"/>
<File Path="dbrtl.dcp"/>
<File Path="PascalScript_Core_D19.dcp"/>
<File Path="rtl.dcp"/>
<File Path="vcl.dcp"/>
</ProjectSortOrder>
</BorlandProject>

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

BIN
Resource/Bitmap/Thumbs.db Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

15
Resource/LINA.rc Normal file
View File

@@ -0,0 +1,15 @@
//TBATTERY BITMAP "TBattery.bmp"
TBATTERY16 BITMAP "Bitmap\Small\TBattery.bmp"
TBATTERY32 BITMAP "Bitmap\Large\TBattery.bmp"
//TLOCALIZATIONMANAGER BITMAP "TLocalizationManager.bmp"
TLOCALIZATIONMANAGER16 BITMAP "Bitmap\Small\TLocalizationManager.bmp"
TLOCALIZATIONMANAGER32 BITMAP "Bitmap\Large\TLocalizationManager.bmp"
//TSCRIPTMANAGER BITMAP "TScriptManager.bmp"
TSCRIPTMANAGER16 BITMAP "Bitmap\Small\TScriptManager.bmp"
TSCRIPTMANAGER32 BITMAP "Bitmap\Large\TScriptManager.bmp"
//TSPLASHSCREEN BITMAP "TSplashScreen.bmp"
TSPLASHSCREEN16 BITMAP "Bitmap\Small\TSplashScreen.bmp"
TSPLASHSCREEN32 BITMAP "Bitmap\Large\TSplashScreen.bmp"
//TVIRTUALPROGRAM BITMAP "TVirtualProgram.bmp"
TVIRTUALPROGRAM16 BITMAP "Bitmap\Small\TVirtualProgram.bmp"
TVIRTUALPROGRAM32 BITMAP "Bitmap\Large\TVirtualProgram.bmp"

BIN
Source/Compiled/uBase.dcu Normal file

Binary file not shown.

Binary file not shown.

BIN
Source/Compiled/uCrypt.dcu Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

98
Source/uBase.pas Normal file
View File

@@ -0,0 +1,98 @@
unit uBase;
//////////////////////////////////////
/// Lina Base Unit ///
/// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. ///
//////////////////////////////////////
{$IF CompilerVersion < 18.0}
{ Unter fr�heren Delphi-Versionen als 2007 gab es (offiziell) noch keine
Unterst�tzung f�r Windows-Vista-spezifische funktionen wie die TaskDialog-
Komponente oder einige Funktionen.
Damit dies nicht zu Problemen f�hrt, geht der Compiler darauf mithilfe
dieser Direktive ein. }
{$DEFINE NO_VISTA}
{$ENDIF}
{$IF CompilerVersion < 20.0}
{ Unter fr�heren Delphi-Versionen als 2009 war die Nutzung generischer
Datentypen (Generics) nicht m�glich. Da es ohne diese nahezu unm�glich
scheint, typisierte Objekte, wie zum Beispiel typisierte TObjectList's
zu deklarieren, fallen diese Deklarationen unter fr�heren Delphi-Versionen
weg. Dies kann eventuell zu kompatibilit�tsproblemen zwischen
unterschiedlichen Nutzern dieser Komponenten f�hren, l�sst sich aber nicht
vermeiden. }
{$DEFINE NO_GENERIC}
{$ENDIF}
interface
{ Dies ist die Basis-Unit f�r die Lina-Komponenten bzw. Methoden und Klassen }
uses
{ Standard-Units }
SysUtils, Dialogs;
type
TComponentAbout = class
private
{ Private-Deklarationen }
FComponent: ShortString;
FVersion: Single;
FAuthor: ShortString;
FCopyright: ShortString;
FHomepage: ShortString;
protected
{ Protected-Deklarationen }
published
property Component: ShortString read FComponent;
property Version: Single read FVersion;
property Copyright: ShortString read FCopyright;
property Author: ShortString read FAuthor;
property Homepage: ShortString read FHomepage;
public
{ Public-Deklarationen }
constructor Create(Comp: ShortString = ''; Ver: Single = 1.0;
Copy: ShortString = ''; Auth: ShortString = ''; Home: ShortString = '');
{ �ber-Dialog }
procedure AboutDlg;
end;
const
ComponentsPage = 'Lina';
About_Title = 'About...';
implementation
constructor TComponentAbout.Create(Comp: ShortString = ''; Ver: Single = 1.0;
Copy: ShortString = ''; Auth: ShortString = ''; Home: ShortString = '');
begin
FComponent := Comp;
FVersion := Ver;
FCopyright := Copy;
FAuthor := Auth;
FHomepage := Homepage;
end;
procedure TComponentAbout.AboutDlg;
begin
{$IFDEF NO_VISTA}
{ MessageDlg, falls der Compiler KEINE Vista-Dialoge unterst�tzt }
MessageDlg(
{$ELSE}
{ TaskMessageDlg, falls der Compiler Vista-Dialoge unterst�tzt }
TaskMessageDlg(
{$ENDIF}
About_Title,
{ ---------------------------------- }
Component + ' v'
+ FloatToStr(Version) + #10#13
+ Copyright + ' ' + Author + #10#13
+ Homepage,
{ ---------------------------------- }
mtInformation,
{ ---------------------------------- }
[mbClose],0)
end;
end.

157
Source/uBattery.pas Normal file
View File

@@ -0,0 +1,157 @@
unit uBattery;
//////////////////////////////////////
/// Lina Battery Unit ///
/// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. ///
//////////////////////////////////////
interface
uses
{ Standard-Units }
SysUtils, Classes, Windows,
{ Andere Package-Units }
uBase;
type
{ Hilfsklassen }
TBatteryFlag = (bfHealthy,bfLow,bfCritical,bfCharge,bfHealthyAccu,bfNone,bfUnknown);
TBatteryStatus = (bsInternal,bsExternal);
type
TBattery = class(TComponent)
private
{ Private-Deklarationen }
function BatteryFlag(Flag: Integer): TBatteryFlag;
function SecToTime(Sec: Integer): TDateTime;
protected
{ Protected-Deklarationen }
public
{ Public-Deklarationen }
function GetPowerStatus: TBatteryStatus;
function GetBatteryTime: TDateTime;
function GetBatteryFullTime: TDateTime;
function GetBatteryFlag: TBatteryFlag;
function GetBatteryFlagReport: String;
function GetBatteryPercent: Byte;
published
{ Published-Deklarationen }
end;
procedure Register;
const
{ Meta-Daten }
BatteryComponent_Name = 'Battery';
BatteryComponent_Version = 1.0;
BatteryComponent_Copyright = 'Copyright � 2014';
BatteryComponent_Author = 'Dennis G�hlert a.o.';
{ PowerStatus-Meldungen }
PS_HEALTHY = 'Healthy';
PS_LOW = 'Low';
PS_CRITICAL = 'Critical';
PS_CHARGE = 'Charge';
PS_HEALTHYACCU = 'Healthy (Akku)';
PS_NONE = 'None';
PS_UNKNOWN = 'Unknown';
implementation
procedure Register;
begin
RegisterComponents(ComponentsPage,[TBattery]);
end;
function TBattery.BatteryFlag(Flag: Integer): TBatteryFlag;
begin
case Flag of
1: Result := bfHealthy;
2: Result := bfLow;
4: Result := bfCritical;
8: Result := bfCharge;
9: Result := bfHealthyAccu;
128: Result := bfNone;
255: Result := bfUnknown;
end;
end;
function TBattery.SecToTime(Sec: Integer): TDateTime;
var
H, M, S: String;
ZH, ZM, ZS: Integer;
begin
if Sec < 0 then
begin
Result := StrToTime('00:00:00');
Exit;
end;
ZH := Sec div 3600;
ZM := Sec div 60 - ZH * 60;
ZS := Sec - (ZH * 3600 + ZM * 60) ;
H := IntToStr(ZH) ;
M := IntToStr(ZM) ;
S := IntToStr(ZS) ;
Result := StrToTime(H + ':' + M + ':' + S);
end;
function TBattery.GetPowerStatus: TBatteryStatus;
var
SysPowerStatus: TSystemPowerStatus;
begin
GetSystemPowerStatus(SysPowerStatus);
if Boolean(SysPowerStatus.ACLineStatus) then
begin
Result := bsExternal;
end else
begin
Result := bsInternal;
end;
end;
function TBattery.GetBatteryTime: TDateTime;
var
SysPowerStatus: TSystemPowerStatus;
begin
GetSystemPowerStatus(SysPowerStatus);
Result := SecToTime(SysPowerStatus.BatteryLifeTime);
end;
function TBattery.GetBatteryFlag: TBatteryFlag;
var
SysPowerStatus: TSystemPowerStatus;
begin
GetSystemPowerStatus(SysPowerStatus);
Result := BatteryFlag(SysPowerStatus.BatteryFlag);
end;
function TBattery.GetBatteryFlagReport: String;
begin
case GetBatteryFlag of
bfHealthy: Result := PS_HEALTHY;
bfLow: Result := PS_LOW;
bfCritical: Result := PS_CRITICAL;
bfCharge: Result := PS_CHARGE;
bfHealthyAccu: Result := PS_HEALTHYACCU;
bfNone: Result := PS_NONE;
bfUnknown: Result := PS_UNKNOWN;
end;
end;
function TBattery.GetBatteryPercent: Byte;
var
SysPowerStatus: TSystemPowerStatus;
begin
GetSystemPowerStatus(SysPowerStatus);
Result := SysPowerStatus.BatteryLifePercent;
end;
function TBattery.GetBatteryFullTime: TDateTime;
var
SysPowerStatus: TSystemPowerStatus;
begin
GetSystemPowerStatus(SysPowerStatus);
Result := SecToTime(SysPowerStatus.BatteryFullLifeTime);
end;
end.

69
Source/uCrypt.pas Normal file
View File

@@ -0,0 +1,69 @@
unit uCrypt;
//////////////////////////////////////
/// Lina Cryption Unit ///
/// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. ///
//////////////////////////////////////
interface
uses
{ Standard-Units }
Classes;
type
TCrypt = class
private
{ Private-Deklarationen }
FLines: TStrings;
public
{ Public-Deklarationen }
constructor Create;
destructor Destroy;
property Lines: TStrings read FLines write FLines;
procedure Decrypt;
procedure Encrypt;
end;
{ Spezifische Kryptologie-Verfahren }
TXorCrypt = class(TCrypt)
end;
TVigenereCrypt = class(TCrypt)
end;
TCaesarCrypt = class(TCrypt)
end;
TDynaCrypt = class(TCrypt)
end;
implementation
constructor TCrypt.Create;
begin
//...
end;
destructor TCrypt.Destroy;
begin
//...
end;
procedure TCrypt.Decrypt;
begin
//...
end;
procedure TCrypt.Encrypt;
begin
//...
end;
end.

277
Source/uFileTools.pas Normal file
View File

@@ -0,0 +1,277 @@
unit uFileTools;
//////////////////////////////////////
/// Lina File Tools Unit ///
/// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. ///
//////////////////////////////////////
interface
{ Da Delphi vor Version 2009 noch keine Generics kannte, musste die TWinFiles-
Deklaration auf Compiler-Versionen 20.0 oder h�her beschr�nkt werden.
Meines Wissens nach gibt es keine einfache M�glichkeit, Typisierte Listen
auch in �ltere Versionen zu integrieren. }
uses
{ Standard-Units }
Classes, SysUtils, ShellAPI, Forms, Winapi.Windows, Dialogs,
{$IFNDEF NOGENERIC}
Generics.Collections,
{$ENDIF}
{ Andere Package-Units }
uBase;
type
{ Fehlermeldungen }
EFileNoExist = class(Exception);
EMissingTypeDesc = class(Exception);
EMissingExts = class(Exception);
EInvalidStyle = class(Exception);
type
{ Hilfsklassen }
TFileExecuteMode = (feOpen,feEdit,feExplore,feFind,fePrint);
TFileNameStyles = set of (fnDirectory,fnExtension);
type
{ Hauptklassen }
TWinFile = class
private
{ Private-Deklarationen }
FFileName: String;
FExecuteMode: TFileExecuteMode;
public
{ Public-Deklarationen }
constructor Create(AFileName: String);
destructor Destroy;
property FileName: String read FFileName;
property ExecuteMode: TFileExecuteMode read FExecuteMode write FExecuteMode;
function GetExtension(WithDot: Boolean = True): String; //ExtractFileExt()
function GetPath: String; //ExtractFilePath()
function GetDir: String; //ExtractFileDir()
function GetFileName(WithExt: Boolean = True): String; //ExtractFileName()
function GetFolderName: String; //ExtractFileFolder()
// GetSize: Int64
// GetVersion: Extended
// GetAttribute: ...
// GetOwner: String
// GetCreated: TDateTime
// GetModified: TDateTime
function Execute: Boolean; //ExecuteFile()
function SafeExecute: Boolean; //.............
end;
TWinFiles = array of TWinFile;
{$IFNDEF NOGENERIC}
TWinFileList = TList<TWinFile>;
{$ENDIF}
function FEModeToPChar(FEMode: TFileExecuteMode): PChar;
procedure EnsureDirDelimeter(var Dir: String);
function ExecuteFile(FileName: String; ExecMode: TFileExecuteMode = feOpen;
InDir: Boolean = False): Boolean;
function ExtractFileFolder(FileName: String): String;
procedure ListFiles(Dir: String; OutList: TStrings; FileExts: array of String;
NameStyles: TFileNameStyles = []); overload;
procedure ListFolders(Dir: String; OutList: TStrings;
NameStyles: TFileNameStyles = []); overload;
//const
{ Dateierweiterungen f�r ListFiles() }
{FXT_ANY = '*.*'
FXT_EXE = ('*.exe');
FXT_TXT = ('*.txt';'*.rtf');
FXT_IMG = ('*.jpg','*.jpeg','*.png','*.tif','*.tiff','*.bmp','*.gif');
FXT_PAS = ('*.pas','*.dpr','*.dpk','*.dfm');
FXT_MSO = ('*.doc','*.xls','*.ppt');
FXT_MSI = ('*.msi');
FXT_IMG = ('*.img','*.iso'); }
implementation
{ TWinFile }
function FEModeToPChar(FEMode: TFileExecuteMode): PChar;
begin
case FEMode of
feOpen: Result := 'open';
feEdit: Result := 'edit';
feExplore: Result := 'explore';
feFind: Result := 'find';
fePrint: Result := 'print';
else Result := nil;
end;
end;
procedure EnsureDirDelimeter(var Dir: String);
begin
if (Dir[Length(Dir)] <> '\') and (Dir[Length(Dir)] <> '/') then
begin
Dir := Dir + '\';
end else
begin
while Length(Dir) >= 1 do
begin
if (Dir[Length(Dir) - 1] = '\') or (Dir[Length(Dir) - 1] = '/') then
begin
Delete(Dir,Length(Dir) - 1,1);
end else
begin
Break;
end;
end;
end;
end;
procedure ListFiles(Dir: String; OutList: TStrings; FileExts: array of String;
NameStyles: TFileNameStyles = []);
var
SRec: TSearchRec;
ExtIndex: Integer;
begin
EnsureDirDelimeter(Dir);
if Length(FileExts) < 1 then
begin
raise EMissingExts.Create('Missing file extensions');
end;
for ExtIndex := Low(FileExts) to High(FileExts) do
begin
if FindFirst(Dir + FileExts[ExtIndex],faAnyFile,SRec) = 0 then
begin
repeat
if ((SRec.Attr and faDirectory) <> faDirectory) and
(SRec.Name <> '.') and (SRec.Name <> '..') and
(ChangeFileExt(SRec.Name,ExtractFileExt(FileExts[ExtIndex])) = SRec.Name) then
begin
OutList.Add(SRec.Name);
if fnDirectory in NameStyles then
begin
OutList.Strings[OutList.Count - 1] := Dir + OutList.Strings[OutList.Count - 1];
end;
if not (fnExtension in NameStyles) then
begin
OutList.Strings[OutList.Count - 1] := ChangeFileExt(OutList.Strings[OutList.Count - 1],'');
end;
end;
until FindNext(SRec) <> 0;
SysUtils.FindClose(SRec);
end;
end;
end;
procedure ListFolders(Dir: String; OutList: TStrings;
NameStyles: TFileNameStyles = []);
var
SRec: TSearchRec;
begin
EnsureDirDelimeter(Dir);
if FindFirst(Dir + '*.*',faAnyFile,SRec) = 0 then
begin
repeat
if ((SRec.Attr and faDirectory) = faDirectory) and
(SRec.Name <> '.') and (SRec.Name <> '..') then
begin
if fnDirectory in NameStyles then
begin
OutList.Add(Dir + SRec.Name);
end else
begin
OutList.Add(SRec.Name);
end;
end;
until FindNext(SRec) <> 0;
SysUtils.FindClose(SRec);
end;
if fnExtension in NameStyles then
begin
raise EInvalidStyle.Create('The extension file name style is invalid for directory names and has been ignored');
end;
end;
function ExecuteFile(FileName: String; ExecMode: TFileExecuteMode = feOpen;
InDir: Boolean = False): Boolean;
begin
Result := True;
try
if InDir = True then
begin
ShellExecute(Application.Handle,FEModeToPChar(ExecMode),PChar(FileName),nil,PChar(ExtractFileDir(FileName)),SW_NORMAL);
end else
begin
ShellExecute(Application.Handle,FEModeToPChar(ExecMode),PChar(FileName),nil,nil,SW_NORMAL);
end;
except
Result := False;
end;
end;
function ExtractFileFolder(FileName: String): String;
begin
Result := ExtractFileName(ExtractFileDir(FileName)); //Name d. �bergeord. Ordners
end;
constructor TWinFile.Create(AFileName: String);
begin
ExecuteMode := feOpen;
FFileName := AFileName;
if FileExists(AFileName) = False then
begin
raise EFileNoExist.Create('File not found: "' + AFileName + '"');
end;
end;
destructor TWinFile.Destroy;
begin
ExecuteMode := feOpen;
end;
function TWinFile.GetExtension(WithDot: Boolean = True): String;
begin
if WithDot = True then
begin
Result := ExtractFileExt(FFileName);
end else
begin
Result := Copy(ExtractFileExt(FFileName),2,Length(ExtractFileExt(FFileName)) - 1);
end;
end;
function TWinFile.GetFileName(WithExt: Boolean = True): String;
begin
if WithExt = True then
begin
Result := ExtractFileName(FFileName); //Name + Erweiterung
end else
begin
Result := ExtractFileName(ChangeFileExt(FFileName,'')); //Nur Dateiname
end;
end;
function TWinFile.GetFolderName: String;
begin
Result := ExtractFileFolder(FFileName);
end;
function TWinFile.GetPath: String;
begin
Result := ExtractFilePath(FFileName); //Gesamter Ordnerpfad (ohne Dateiname)
end;
function TWinFile.GetDir: String;
begin
Result := ExtractFileDir(FFileName);
end;
function TWinFile.Execute: Boolean;
begin
Result := ExecuteFile(FileName,ExecuteMode);
end;
function TWinFile.SafeExecute: Boolean;
begin
Result := ExecuteFile(FileName,ExecuteMode,True);
end;
end.

576
Source/uFrmCtrls.pas Normal file
View File

@@ -0,0 +1,576 @@
unit uFrmCtrls;
//////////////////////////////////////
/// Lina Form Controls Unit ///
/// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. ///
//////////////////////////////////////
interface
uses
{ Standard-Units }
SysUtils, Classes, Controls, Forms, ComCtrls, ExtCtrls, Graphics,
{ Andere Package-Units }
uBase;
type
{ Hilfsklassen }
TSplashScreenMode = (ssmDefault,ssmModal);
TSplashScreenAnimation = (ssaNone,ssaShallow);
type
{ Ereignisse }
TSplashCreateEvent = procedure(Sender: TObject) of object;
TSplashDestroyEvent = procedure(Sender: TObject) of object;
TSplashShowEvent = procedure(Sender: TObject) of object;
TSplashHideEvent = procedure(Sender: TObject) of object;
TSplashChangeEvent = procedure(Sender: TObject) of object;
TSplashTimerEvent = procedure(Sender: TObject) of object;
type
{ Hauptklassen }
TSplashForm = class
private
{ Private-Deklarationen }
FBorderStyle: TFormBorderStyle;
FBorderIcons: TBorderIcons;
FLeft: Integer;
FTop: Integer;
FWidth: Integer;
FHeight: Integer;
FVisible: Boolean;
FAlign: TAlign;
FAlphaBlend: Boolean;
FAlphaBlendValue: Byte;
FCaption: TCaption;
FColor: TColor;
FEnabled: Boolean;
FWindowState: TWindowState;
FPosition: TPosition;
FCursor: TCursor;
public
{ Public-Deklarationen }
constructor Create;
destructor Destroy; override;
published
{ Published-Deklarationen }
property BorderStyle: TFormBorderStyle read FBorderStyle write FBorderStyle default bsNone;
property BorderIcons: TBorderIcons read FBorderIcons write FBorderIcons default [];
property Left: Integer read FLeft write FLeft default 0;
property Top: Integer read FTop write FTop default 0;
property Width: Integer read FWidth write FWidth default 600;
property Height: Integer read FHeight write FHeight default 400;
property Visible: Boolean read FVisible write FVisible default True;
property Align: TAlign read FAlign write FAlign default alNone;
property AlphaBlend: Boolean read FAlphaBlend write FAlphaBlend default False;
property AlphaBlendValue: Byte read FAlphaBlendValue write FAlphaBlendValue default 255;
property Caption: TCaption read FCaption write FCaption;
property Color: TColor read FColor write FColor default clBtnFace;
property Enabled: Boolean read FEnabled write FEnabled default False;
property WindowState: TWindowState read FWindowState write FWindowState default wsNormal;
property Position: TPosition read FPosition write FPosition default poScreenCenter;
property Cursor: TCursor read FCursor write FCursor default crHourGlass;
end;
TSplashProgressBar = class
private
{ Private-Deklarationen }
FLeft: Integer;
FTop: Integer;
FWidth: Integer;
FHeight: Integer;
FVisible: Boolean;
FPosition: Integer;
FMin: Integer;
FMax: Integer;
FAlign: TAlign;
FBackgroundColor: TColor;
FBarColor: TColor;
FState: TProgressBarState;
FStyle: TProgressBarStyle;
FSmooth: Boolean;
FSmoothReverse: Boolean;
FMarqueeInterval: Integer;
FStep: Integer;
public
{ Public-Deklarationen }
constructor Create;
destructor Destroy; override;
published
{ Published-Deklarationen }
property Left: Integer read FLeft write FLeft default 250;
property Top: Integer read FTop write FTop default 250;
property Width: Integer read FWidth write FWidth default 100;
property Height: Integer read FHeight write FHeight default 50;
property Visible: Boolean read FVisible write FVisible default True;
property Position: Integer read FPosition write FPosition default 0;
property Max: Integer read FMax write FMax default 100;
property Min: Integer read FMin write FMin default 0;
property Align: TAlign read FAlign write FAlign default alNone;
property BackgroundColor: TColor read FBackgroundColor write FBackgroundColor default clDefault;
property BarColor: TColor read FBarColor write FBarColor default clDefault;
property State: TProgressBarState read FState write FState default pbsNormal;
property Style: TProgressBarStyle read FStyle write FStyle default pbstNormal;
property Smooth: Boolean read FSmooth write FSmooth default False;
property SmoothReverse: Boolean read FSmoothReverse write FSmoothReverse default False;
property MarqueeInterval: Integer read FMarqueeInterval write FMarqueeInterval default 10;
property Step: Integer read FStep write FStep default 10;
end;
TSplashImage = class
private
{ Private-Deklarationen }
FVisible: Boolean;
FTransparent: Boolean;
FPicture: TPicture;
public
{ Public-Deklarationen }
constructor Create;
destructor Destroy; override;
published
{ Published-Deklarationen }
property Visible: Boolean read FVisible write FVisible default True;
property Transparent: Boolean read FTransparent write FTransparent default False;
property Picture: TPicture read FPicture write FPicture;
end;
TSplashTimer = class
private
{ Private-Deklarationen }
FEnabled: Boolean;
FInterval: Cardinal;
public
{ Public-Deklarationen }
constructor Create;
destructor Destroy;
published
{ Published-Deklarationen }
property Enabled: Boolean read FEnabled write FEnabled default False;
property Interval: Cardinal read FInterval write FInterval default 1000;
end;
TSplashScreen = class(TComponent)
private
{ Private-Deklarationen }
FormObject: TForm;
ProgressBarObject: TProgressBar;
ImageObject: TImage;
TimerObject: TTimer;
AnimationTimerShow: TTimer;
AnimationTimerHide: TTimer;
FAbout: TComponentAbout;
FSplashForm: TSplashForm;
FSplashProgressBar: TSplashProgressBar;
FSplashImage: TSplashImage;
FSplashTimer: TSplashTimer;
FDisplayTime: Cardinal;
FAutoShow: Boolean;
FMode: TSplashScreenMode;
FAnimation: TSplashScreenAnimation;
FVisible: Boolean;
{ Ereignisse }
FCreateEvent: TSplashCreateEvent;
FDestroyEvent: TSplashDestroyEvent;
FShowEvent: TSplashShowEvent;
FHideEvent: TSplashHideEvent;
FChangeEvent: TSplashChangeEvent;
FTimerEvent: TSplashTimerEvent;
{ Methoden }
procedure SetVisible(Value: Boolean);
procedure FormObjectShow(Sender: TObject);
procedure FormObjectHide(Sender: TObject);
procedure TimerObjectTimer(Sender: TObject);
procedure AnimationTimerShowTimer(Sender: TObject);
procedure AnimationTimerHideTimer(Sender: TObject);
protected
{ Protected-Deklarationen }
procedure Refresh; //Vorberaitung (benutzerdefinierte Werte)
procedure Reset; //Vorbereitung (standardm��ige Werte)
public
{ Public-Deklarationen }
property Visible: Boolean read FVisible write SetVisible;
constructor Create(AOwnder: TComponent); override;
destructor Destroy; override;
procedure ApplyChanges; //�nderungen �bernehmen
procedure Show; //Anzeigen
procedure Hide; //Verstecken (schlie�en)
published
{ Published-Deklarationen }
{ Ereignisse }
property OnCreate: TSplashCreateEvent read FCreateEvent write FCreateEvent;
property OnDestroy: TSplashDestroyEvent read FDestroyEvent write FDestroyEvent;
property OnShow: TSplashShowEvent read FShowEvent write FShowEvent;
property OnHide: TSplashHideEvent read FHideEvent write FHideEvent;
property OnChange: TSplashChangeEvent read FChangeEvent write FChangeEvent;
property OnTimer: TSplashTimerEvent read FTimerEvent write FTimerEvent;
{ Eigenschaften }
property About: TComponentAbout read FAbout write FAbout;
property SplashForm: TSplashForm read FSplashForm write FSplashForm;
property SplashProgressBar: TSplashProgressBar read FSplashProgressBar write FSplashProgressBar;
property SplashImage: TSplashImage read FSplashImage write FSplashImage;
property SplashTimer: TSplashTimer read FSplashTimer write FSplashTimer;
property DisplayTime: Cardinal read FDisplayTime write FDisplayTime default 2000;
property AutoShow: Boolean read FAutoShow write FAutoShow default True;
property Mode: TSplashScreenMode read FMode write FMode default ssmDefault;
property Animation: TSplashScreenAnimation read FAnimation write FAnimation;
end;
procedure Register;
const
{ Meta-Daten }
SplashComponent_Name = 'SplashScreen';
SplashComponent_Version = 1.0;
SplashComponent_Copyright = 'Copyright � 2014';
SplashComponent_Author = 'Dennis G�hlert a.o.';
implementation
procedure Register;
begin
RegisterComponents(ComponentsPage,[TSplashScreen]);
end;
{ ----------------------------------------------------------------------------
TSplashForm
---------------------------------------------------------------------------- }
constructor TSplashForm.Create;
begin
Visible := False;
end;
destructor TSplashForm.Destroy;
begin
//...
inherited;
end;
{ ----------------------------------------------------------------------------
TSplashProgressBar
---------------------------------------------------------------------------- }
constructor TSplashProgressBar.Create;
begin
//...
end;
destructor TSplashProgressBar.Destroy;
begin
//...
inherited;
end;
{ ----------------------------------------------------------------------------
TSplashImage
---------------------------------------------------------------------------- }
constructor TSplashImage.Create;
begin
FPicture := TPicture.Create;
end;
destructor TSplashImage.Destroy;
begin
FPicture.Free;
inherited;
end;
{ ----------------------------------------------------------------------------
TSplashTimer
---------------------------------------------------------------------------- }
constructor TSplashTimer.Create;
begin
//...
end;
destructor TSplashTimer.Destroy;
begin
//...
inherited;
end;
{ ----------------------------------------------------------------------------
TSplashScreen
---------------------------------------------------------------------------- }
constructor TSplashScreen.Create(AOwnder: TComponent);
begin
inherited;
FAbout := TComponentAbout.Create(SplashComponent_Name,SplashComponent_Version,SplashComponent_Copyright,SplashComponent_Author);
FSplashForm := TSplashForm.Create;
FSplashProgressBar := TSplashProgressBar.Create;
FSplashImage := TSplashImage.Create;
FSplashTimer := TSplashTimer.Create;
FormObject := TForm.Create(Self);
FormObject.OnShow := FormObjectShow;
FormObject.OnHide := FormObjectHide;
ProgressBarObject := TProgressBar.Create(Self);
ProgressBarObject.Parent := FormObject;
ImageObject := TImage.Create(Self);
ImageObject.Parent := FormObject;
TimerObject := TTimer.Create(Self);
TimerObject.OnTimer := TimerObjectTimer;
AnimationTimerShow := TTimer.Create(Self);
AnimationTimerShow.OnTimer := AnimationTimerShowTimer;
AnimationTimerShow.Enabled := False;
AnimationTimerShow.Interval := 50;
AnimationTimerHide := TTimer.Create(Self);
AnimationTimerHide.OnTimer := AnimationTimerHideTimer;
AnimationTimerHide.Enabled := False;
AnimationTimerHide.Interval := 50;
Reset;
if Assigned(OnCreate) then
begin
OnCreate(Self);
end;
end;
destructor TSplashScreen.Destroy;
begin
if Assigned(OnDestroy) then
begin
OnDestroy(Self);
end;
FAbout.Free;
FSplashForm.Free;
FSplashProgressBar.Free;
FSplashImage.Free;
FSplashTimer.Free;
FormObject.Close;
FormObject.Free;
//ProgressBarObject.Free; _
//ImageObject.Free; |
//TimerObject.Free; |____\ Automatisch
//AnimationTimerShow.Free; | / freigegeben
//AnimationTimerHide.Free; _|
inherited;
end;
procedure TSplashScreen.Show;
begin
ApplyChanges;
if Mode = ssmModal then
begin
FormObject.ShowModal;
end else
begin
FormObject.Show;
end;
if Assigned(OnShow) then
begin
OnShow(Self);
end;
if Animation = ssaShallow then
begin
FormObject.AlphaBlend := True;
FormObject.AlphaBlendValue := 0;
AnimationTimerShow.Enabled := True;
end;
FVisible := True;
FormObject.BringToFront;
end;
procedure TSplashScreen.Hide;
begin
if Animation = ssaNone then
begin
FormObject.Hide;
end else
begin
if Animation = ssaShallow then
begin
FormObject.AlphaBlend := True;
AnimationTimerHide.Enabled := True;
end;
end;
FVisible := False;
if Assigned(OnHide) then
begin
OnHide(Self);
end;
end;
procedure TSplashScreen.ApplyChanges;
begin
{ "Refresh;" ist nicht public, deswegen hier eine Referenz.
Falls beim �bernehmen der �nderungen noch sonstige Dinge getan werden
m�ssen, k�nnen diese hier definiert werden. }
Refresh;
end;
procedure TSplashScreen.Refresh;
begin
{ TSplashForm -> TForm }
FormObject.BorderStyle := SplashForm.BorderStyle;
FormObject.BorderIcons := SplashForm.BorderIcons;
FormObject.Left := SplashForm.Left;
FormObject.Top := SplashForm.Top;
FormObject.Width := SplashForm.Width;
FormObject.Height := SplashForm.Height;
FormObject.Visible := SplashForm.Visible;
FormObject.Align := SplashForm.Align;
FormObject.AlphaBlend := SplashForm.AlphaBlend;
FormObject.AlphaBlendValue := SplashForm.AlphaBlendValue;
FormObject.Caption := SplashForm.Caption;
FormObject.Color := SplashForm.Color;
FormObject.Enabled := SplashForm.Enabled;
FormObject.WindowState := SplashForm.WindowState;
FormObject.Position := SplashForm.Position;
FormObject.Cursor := SplashForm.Cursor;
{ TSplashProgressBar -> TProgressBar }
ProgressBarObject.Left := SplashProgressBar.Left;
ProgressBarObject.Top := SplashProgressBar.Top;
ProgressBarObject.Width := SplashProgressBar.Width;
ProgressBarObject.Height := SplashProgressBar.Height;
ProgressBarObject.Visible := SplashProgressBar.Visible;
ProgressBarObject.Position := SplashProgressBar.Position;
ProgressBarObject.Max := SplashProgressBar.Max;
ProgressBarObject.Min := SplashProgressBar.Min;
ProgressBarObject.Align := SplashProgressBar.Align;
ProgressBarObject.BackgroundColor := SplashProgressBar.BackgroundColor;
ProgressBarObject.BarColor := SplashProgressBar.BarColor;
ProgressBarObject.State := SplashProgressBar.State;
ProgressBarObject.Style := SplashProgressBar.Style;
ProgressBarObject.Smooth := SplashProgressBar.Smooth;
ProgressBarObject.SmoothReverse := SplashProgressBar.SmoothReverse;
ProgressBarObject.MarqueeInterval := SplashProgressBar.MarqueeInterval;
ProgressBarObject.Step := SplashProgressBar.Step;
{ TSplashImage -> TImage }
ImageObject.Visible := SplashImage.Visible;
ImageObject.Transparent := SplashImage.Transparent;
ImageObject.Picture := SplashImage.Picture;
{ TSplashTimer -> TTimer }
TimerObject.Enabled := SplashTimer.Enabled;
TimerObject.Interval := SplashTimer.Interval;
if Assigned(OnChange) then
begin
OnChange(Self);
end;
end;
procedure TSplashScreen.Reset;
begin
{ TSplashForm }
SplashForm.BorderStyle := bsNone;
SplashForm.BorderIcons := [];
SplashForm.Left := 0;
SplashForm.Top := 0;
SplashForm.Width := 600;
SplashForm.Height := 400;
SplashForm.Visible := True;
SplashForm.Align := alNone;
SplashForm.AlphaBlend := False;
SplashForm.AlphaBlendValue := 255;
SplashForm.Color := clBtnFace;
SplashForm.Enabled := False;
SplashForm.WindowState := wsNormal;
SplashForm.Position := poScreenCenter;
SplashForm.Cursor := crHourGlass;
{ TSplashProgressBar }
SplashProgressBar.Left := 250;
SplashProgressBar.Top := 250;
SplashProgressBar.Width := 100;
SplashProgressBar.Height := 50;
SplashProgressBar.Visible := True;
SplashProgressBar.Position := 0;
SplashProgressBar.Max := 100;
SplashProgressBar.Min := 0;
SplashProgressBar.Align := alNone;
SplashProgressBar.BackgroundColor := clDefault;
SplashProgressBar.BarColor := clDefault;
SplashProgressBar.State := pbsNormal;
SplashProgressBar.Style := pbstNormal;
SplashProgressBar.Smooth := False;
SplashProgressBar.SmoothReverse := False;
SplashProgressBar.MarqueeInterval := 10;
SplashProgressBar.Step := 10;
{ TSplashImage }
SplashImage.Visible := True;
SplashImage.Transparent := False;
{ TSplashTimer }
SplashTimer.Enabled := False;
SplashTimer.Interval := 1000;
if Assigned(OnChange) then
begin
OnChange(Self);
end;
end;
procedure TSplashScreen.SetVisible(Value: Boolean);
begin
if Value = True then
begin
Show;
end else
begin
Hide;
end;
end;
procedure TSplashScreen.FormObjectShow(Sender: TObject);
begin
//...
end;
procedure TSplashScreen.FormObjectHide(Sender: TObject);
begin
//...
end;
procedure TSplashScreen.TimerObjectTimer(Sender: TObject);
begin
if Assigned(OnTimer) then
begin
OnTimer(Self);
end;
end;
procedure TSplashScreen.AnimationTimerShowTimer(Sender: TObject);
begin
if Animation = ssaShallow then
begin
if FormObject.AlphaBlendValue <> SplashForm.AlphaBlendValue then
begin
if SplashForm.AlphaBlendValue - FormObject.AlphaBlendValue < 10 then
begin
FormObject.AlphaBlendValue := FormObject.AlphaBlendValue + (SplashForm.AlphaBlendValue - FormObject.AlphaBlendValue);
end else
begin
FormObject.AlphaBlendValue := FormObject.AlphaBlendValue + 10;
end;
end else
begin
AnimationTimerShow.Enabled := False;
FormObject.AlphaBlend := SplashForm.AlphaBlend;
end;
end;
end;
procedure TSplashScreen.AnimationTimerHideTimer(Sender: TObject);
begin
if Animation = ssaShallow then
begin
if FormObject.AlphaBlendValue <> 0 then
begin
if FormObject.AlphaBlendValue < 10 then
begin
FormObject.AlphaBlendValue := FormObject.AlphaBlendValue - FormObject.AlphaBlendValue;
end else
begin
FormObject.AlphaBlendValue := FormObject.AlphaBlendValue - 10;
end;
end;
end else
begin
AnimationTimerHide.Enabled := False;
FormObject.AlphaBlend := SplashForm.AlphaBlend;
end;
end;
end.

134
Source/uLocalMgr.pas Normal file
View File

@@ -0,0 +1,134 @@
unit uLocalMgr;
//////////////////////////////////////
/// Lina Localize Manager Unit ///
/// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. ///
//////////////////////////////////////
interface
uses
{ Standard-Units }
SysUtils, Classes, IniFiles,
{ Andere Package-Units }
uBase;
type
{ Hilfsklassen }
TComponentDetectMode = (cdTag,cdName);
TIdentifyStructure = (isSimple,isSection);
type
{ Hauptklassen }
TLocalization = class
private
{ Private-Deklarationen }
FFileName: TFileName;
FLanguageName: ShortString;
FLines: TStrings;
protected
{ Protected-Deklarationen }
public
{ Public-Deklarationen }
constructor Create; overload;
constructor Create(AFileName: TFileName); overload;
destructor Destroy;
function Check: Boolean;
published
{ Published-Deklarationen }
property FileName: TFileName read FFileName write FFileName;
property LanguageName: ShortString read FLanguageName write FLanguageName;
property Lines: TStrings read FLines;
end;
TLocalizations = array of TLocalization;
TLocalizationManager = class(TComponent)
private
{ Private-Deklarationen }
FAbout: TComponentAbout;
FLanguages: TLocalizations;
FCurrent: TLocalization;
FDefault: TLocalization;
FDetect: TComponentDetectMode;
FStructure: TIdentifyStructure;
protected
{ Protected-Deklarationen }
public
{ Public-Deklarationen }
constructor Create(AOwnder: TComponent); override;
destructor Destroy; override;
published
{ Published-Deklarationen }
property About: TComponentAbout read FAbout write FAbout;
property Languages: TLocalizations read FLanguages write FLanguages;
property Current: TLocalization read FCurrent write FCurrent;
property Default: TLocalization read FDefault write FDefault;
property Detect: TComponentDetectMode read FDetect write FDetect default cdName;
property Structure: TIdentifyStructure read FStructure write FStructure default isSection;
end;
procedure Register;
const
{ Meta-Daten }
LocalComponent_Name = 'LocalizationManager';
LocalComponent_Version = 1.0;
LocalComponent_Copyright = 'Copyright � 2014';
LocalComponent_Author = 'Dennis G�hlert a.o.';
implementation
procedure Register;
begin
RegisterComponents(ComponentsPage,[TLocalizationManager]);
end;
{ ----------------------------------------------------------------------------
TLocalization
---------------------------------------------------------------------------- }
constructor TLocalization.Create;
begin
//...
end;
constructor TLocalization.Create(AFileName: TFileName);
begin
//...
end;
destructor TLocalization.Destroy;
begin
//...
end;
function TLocalization.Check: Boolean;
var
Index: Integer;
begin
for Index := 0 to Lines.Count do
begin
end;
end;
{ ----------------------------------------------------------------------------
TLocalizationManager
---------------------------------------------------------------------------- }
constructor TLocalizationManager.Create(AOwnder: TComponent);
begin
inherited;
FAbout := TComponentAbout.Create(LocalComponent_Name,LocalComponent_Version,LocalComponent_Copyright,LocalComponent_Author);
end;
destructor TLocalizationManager.Destroy;
begin
//...
inherited;
end;
end.

740
Source/uScriptMgr.pas Normal file
View File

@@ -0,0 +1,740 @@
unit uScriptMgr;
//////////////////////////////////////
/// Lina Script Manager Unit ///
/// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. ///
//////////////////////////////////////
interface
{ Wegen Kompatibilit�tsgr�nden mussten einige AnsiString-Werte eingebaut
werden, da die PascalScript-Engine von RemObjects noch f�r �ltere Versionen
von Delphi ausgelegt war. Damit TScriptManager auch unter neueren Delphi-
Versionen kompiliert werden kann, m�ssen die AnsiString-Werte so belassen
werden, da es sonst zu Fehlern kommt. }
uses
{ Standard-Units }
Classes, SysUtils, Dialogs, Forms,
{ PS Komponenten-Units }
uPSCompiler, uPSRuntime, uPSComponent,
{ PS Syntax-Libraries }
uPSComponent_Default, uPSComponent_COM, uPSComponent_Controls,
uPSComponent_Forms, uPSComponent_StdCtrls, uPSComponent_DB,
{ Andere Package-Units }
uBase, uFileTools;
type
{ Fehlermeldungen }
EMissingReturnTarget = class(Exception);
EMissingComponentName = class(Exception);
EInvalidCodeLine = class(Exception);
type
{ Hilfsklassen }
TScriptReturnMode = (srNone,srAll,srErrors);
TScriptReturnStyle = (srSimple,srTime,srDateTime,srName);
TScriptLibraries = set of (slClasses,slControls,slStdCtrls,slForms,slDateUtils,slComObj,slDB,slCustom);
type
{ Ereignisse }
TScriptCreateEvent = procedure(Sender: TObject) of object;
TScriptDestroyEvent = procedure(Sender: TObject) of object;
TScriptReturnEvent = procedure(Sender: TObject; const Msg: String) of object;
TScriptNeedFileEvent = function(Sender:TObject; const OriginFileName: AnsiString; var FileName, Output: AnsiString): Boolean of object;
TScriptCompileEvent = procedure(Sender: TObject) of object;
TScriptExecuteEvent = procedure(Sender: TObject) of object;
TScriptAfterExecuteEvent = procedure(Sender: TObject) of object;
TScriptLineEvent = procedure(Sender: TObject) of object;
TScriptCodeAssignEvent = procedure(Sender: TObject) of object;
TScriptCodeLoadEvent = procedure(Sender: TObject) of object;
type
{ Hauptklassen }
TScriptManager = class(TComponent)
private
{ Private-Deklarationen }
ScriptEngine: TPSScript;
Log: TStrings;
Code: TStrings;
CustomPlugins: TPSPlugIns;
FAbout: TComponentAbout;
FReturnMode: TScriptReturnMode;
FReturnStyle: TScriptReturnStyle;
FReturnTarget: TStrings;
FSecureMode: Boolean;
FVarApplication: TApplication;
FVarSelf: TForm;
FLibraries: TScriptLibraries;
{ Ereignisse }
FCreateEvent: TScriptCreateEvent;
FDestroyEvent: TScriptDestroyEvent;
FReturnEvent: TScriptReturnEvent;
FNeedFileEvent: TScriptNeedFileEvent;
FCompileEvent: TScriptCompileEvent;
FExecuteEvent: TScriptExecuteEvent;
FAfterExecuteEvent: TScriptAfterExecuteEvent;
FLineEvent: TScriptLineEvent;
FCodeAssignEvent: TScriptCodeAssignEvent;
FCodeLoadEvent: TScriptCodeLoadEvent;
{ Methoden }
function GetCompilerOptions: TPSCompOptions;
procedure SetCompilerOptions(const Value: TPSCompOptions);
function GetCodeLines(Index: Integer): String; //Int. Dekl. f�r: CodeLines[Index]
procedure SetCodeLines(Index: Integer; const Value: String); //Int. Dekl. f�r: CodeLines[Index]
function GetCodeCount: Integer;
function GetRunning: Boolean;
function GetPluginItems(Index: Integer): TPSPlugin;
procedure SetPluginItems(Index: Integer; const Value: TPSPlugin);
procedure SetLibraries(const Value: TScriptLibraries);
function GetUsePreProcessor: Boolean;
procedure SetUsePreProcessor(const Value: Boolean);
function GetMainFileName: AnsiString;
procedure SetMainFileName(const Value: AnsiString);
function GetDefines: TStrings;
procedure SetDefines(const Value: TStrings);
function GetPluginCount: Integer;
published
{ Published-Deklarationen }
{ Ereignisse}
property OnCreate: TScriptCreateEvent read FCreateEvent write FCreateEvent;
property OnDestroy: TScriptDestroyEvent read FDestroyEvent write FDestroyEvent;
property OnReturn: TScriptReturnEvent read FReturnEvent write FReturnEvent;
property OnNeedFile: TScriptNeedFileEvent read FNeedFileEvent write FNeedFileEvent;
property OnCompile: TScriptCompileEvent read FCompileEvent write FCompileEvent;
property OnExecute: TScriptExecuteEvent read FExecuteEvent write FExecuteEvent;
property OnAfterExecute: TScriptAfterExecuteEvent read FAfterExecuteEvent write FAfterExecuteEvent;
property OnLine: TScriptLineEvent read FLineEvent write FLineEvent;
property OnCodeAssign: TScriptCodeAssignEvent read FCodeAssignEvent write FCodeAssignEvent;
property OnCodeLoad: TScriptCodeLoadEvent read FCodeLoadEvent write FCodeLoadEvent;
{ Eigenschaften }
property CompilerOptions: TPSCompOptions read GetCompilerOptions write SetCompilerOptions default [];
property ReturnMode: TScriptReturnMode read FReturnMode write FReturnMode default srNone; //Wann soll eine R�ckmeldung erfolgen?
property ReturnStyle: TScriptReturnStyle read FReturnStyle write FReturnStyle default srSimple; //Wie soll diese R�ckmeldung aussehen?
property ReturnTarget: TStrings read FReturnTarget write FReturnTarget; //Wohin soll die R�ckmeldung geschrieben werden?
property SecureMode: Boolean read FSecureMode write FSecureMode default True; //Darf der Script auf den ScriptMgr zugreifen?
property VarApplication: TApplication read FVarApplication write FVarApplication; //Variable "Application"
property VarSelf: TForm read FVarSelf write FVarSelf; //Variable "Self"
property Libraries: TScriptLibraries read FLibraries write SetLibraries default [slClasses,slControls,slStdCtrls,slForms,slDateUtils,slCustom];
property UsePreProcessor: Boolean read GetUsePreProcessor write SetUsePreProcessor; //Sind "Include"-Anweisungen erlaubt?
property MainFileName: AnsiString read GetMainFileName write SetMainFileName; //Dateiname f�r "Include"-Anweisungen
property Defines: TStrings read GetDefines write SetDefines; //Standardwerte f�r "Include"-Anweisung
{ Meta-Daten }
property About: TComponentAbout read FAbout;
protected
{ Protected-Deklarationen }
procedure AddLog(Entry: String);
procedure AddCustomPlugins;
function ScriptEngineNeedFile(Sender:TObject; const OriginFileName: AnsiString; var FileName, Output: AnsiString): Boolean; //TPSScript.OnNeedFile-Ereignis
procedure ScriptEngineCompile(Sender: TPSScript); //TPSScript.OnCompile-Ereignis
procedure ScriptEngineExecute(Sender: TPSScript); //TPSScript.OnExecute-Ereignis
procedure ScriptEngineAfterExecute(Sender: TPSScript); //TPSScript.OnAfterExecute-Ereignis
procedure ScriptEngineLine(Sender: TObject); //TPSScript.OnLine-Ereignis
{ Skript-Funktionen }
function PS_Random(LimitPlusOne : Integer): Integer;
function PS_ExecuteFile(FileName: String; ExecMode: TFileExecuteMode): Boolean;
function PS_InputBox(const ACaption, APrompt, ADefault: String): String;
function PS_InputQuery(const ACaption, APrompt: String; var Value: String): Boolean;
procedure PS_ShowMessage(const Msg: String);
procedure PS_Randomize;
procedure PS_Sleep(Milliseconds: Cardinal);
procedure PS_About;
public
{ Public-Deklarationen }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property Running: Boolean read GetRunning;
procedure Stop; virtual;
property CodeLines[Index: Integer]: String read GetCodeLines write SetCodeLines;
property CodeCount: Integer read GetCodeCount;
function CodeAddLine(const S: String): Integer;
procedure CodeAddLines(Strings: TStrings);
procedure CodeDeleteLine(Index: Integer);
procedure CodeLoadFromFile(FileName: String);
procedure CodeLoadFromStream(Stream: TStream);
procedure CodeAssign(Source: TPersistent);
procedure CodeClear;
function CompileAndExecute: Boolean;
property PluginItems[Index: Integer]: TPSPlugin read GetPluginItems write SetPluginItems;
property PluginCount: Integer read GetPluginCount;
procedure PluginAdd(Plugin: TPSPlugin);
procedure PluginDelete(Plugin: TPSPlugin);
end;
procedure AddPlugin(PluginList: TPSPlugins; Plugin: TPSPlugin);
procedure DeletePlugin(PluginList: TPSPlugins; Plugin: TPSPlugin);
procedure Register;
const
{ Meta-Daten }
ScriptComponent_Name = 'ScriptManager';
ScriptComponent_Version = 1.0;
ScriptComponent_Copyright = 'Copyright � 2014';
ScriptComponent_Author = 'Dennis G�hlert a.o.';
{ Fehlermeldungen }
Error_InvalidCodeLine = 'Invalid cole-line number';
Error_MissingReturnTarget = 'Missing log-return target';
Error_MissingComponentName = 'Missing component name';
var
{ PS Import-Units }
PS_Import_Classes: TPSImport_Classes;
PS_Import_Controls: TPSImport_Controls;
PS_Import_StdCtrls: TPSImport_StdCtrls;
PS_Import_Forms: TPSImport_Forms;
PS_Import_DateUtils: TPSImport_DateUtils;
PS_Import_ComObj: TPSImport_ComObj;
PS_Import_DB: TPSImport_DB;
implementation
procedure Register;
begin
RegisterComponents(ComponentsPage,[TScriptManager]);
end;
procedure AddPlugin(PluginList: TPSPlugins; Plugin: TPSPlugin);
begin
TPSPluginItem(PluginList.Add).Plugin := Plugin;
end;
procedure DeletePlugin(PluginList: TPSPlugins; Plugin: TPSPlugin);
var
Index: Integer;
PluginFound: Boolean;
begin
PluginFound := False;
Index := 0;
if PluginList.Count > Index then
begin
repeat
if TPSPluginItem(PluginList.Items[Index]).Plugin = Plugin then
begin
PluginList.Delete(Index);
PluginFound := True;
end else
begin
Index := Index + 1;
end;
until (PluginFound = True);
end;
end;
constructor TScriptManager.Create(AOwner: TComponent);
begin
inherited;
FAbout := TComponentAbout.Create(ScriptComponent_Name,ScriptComponent_Version,ScriptComponent_Copyright,ScriptComponent_Author);
//ReturnMode := srNone; Durch DEFAULT festgelegt!
//ReturnStyle := srSimple; Durch DEFAULT festgelegt!
SecureMode := True;
//ReturnSL := TStringList.Create; Nicht erstellen, Property ist nur ein Pointer auf ext. TStrings
FLibraries := [slClasses,slControls,slStdCtrls,slForms,slDateUtils,slCustom];
if (Self.Owner is TForm) or (Owner.ClassParent = TForm) then
begin
VarSelf := (Self.Owner as TForm);
end;
Log := TStringList.Create;
Code := TStringList.Create;
CustomPlugins := TPSPlugins.Create(ScriptEngine);
ScriptEngine := TPSScript.Create(nil);
ScriptEngine.OnNeedFile := ScriptEngineNeedFile;
ScriptEngine.OnCompile := ScriptEngineCompile;
ScriptEngine.OnExecute := ScriptEngineExecute;
ScriptEngine.OnAfterExecute := ScriptEngineAfterExecute;
ScriptEngine.OnLine := ScriptEngineLine;
{ Import-Unit-Komponenten erstellen }
PS_Import_Classes := TPSImport_Classes.Create(Self);
PS_Import_Controls := TPSImport_Controls.Create(Self);
PS_Import_StdCtrls := TPSImport_StdCtrls.Create(Self);
PS_Import_Forms := TPSImport_Forms.Create(Self);
PS_Import_DateUtils := TPSImport_DateUtils.Create(Self);
PS_Import_ComObj := TPSImport_ComObj.Create(Self);
PS_Import_DB := TPSImport_DB.Create(Self);
//Libraries := [slClasses,slControls,slStdCtrls,slForms,slDateUtils,slCustom]; Durch DEFAULT festgelegt!
if Assigned(OnCreate) then
begin
OnCreate(Self);
end;
end;
destructor TScriptManager.Destroy;
begin
if Assigned(OnDestroy) then
begin
OnDestroy(Self);
end;
VarSelf := nil;
VarApplication := nil;
ReturnMode := srNone;
ReturnStyle := srSimple;
//ReturnSL.Free; Pointer auf ext. Komponente, nicht freigeben
Log.Free;
Code.Free;
//ScriptEngine.Free; Wird automatisch mit dem Owner vom TScriptManager freigegeben
About.Free;
{PS_Import_DB.Free;
PS_Import_ComObj.Free;
PS_Import_DateUtils.Free;
PS_Import_Forms.Free;
PS_Import_StdCtrls.Free;
PS_Import_Controls.Free;
PS_Import_Classes.Free; }
CustomPlugins.Free;
ScriptEngine.Free;
inherited;
end;
function TScriptManager.GetCompilerOptions: TPSCompOptions;
begin
Result := ScriptEngine.CompilerOptions;
end;
procedure TScriptManager.SetCompilerOptions(const Value: TPSCompOptions);
begin
ScriptEngine.CompilerOptions := Value;
ScriptEngine.Stop
end;
function TScriptManager.GetCodeLines(Index: Integer): String;
begin
if (Index >= 0) and (Index <= Code.Count - 1) then
begin
Result := Code.Strings[Index];
end else
begin
raise EInvalidCodeLine.Create(Error_InvalidCodeLine);
end;
end;
procedure TScriptManager.SetCodeLines(Index: Integer; const Value: String);
begin
if (Index >= 0) and (Index <= Code.Count - 1) then
begin
Code.Strings[Index] := Value;
if ReturnMode = srAll then
begin
AddLog('Code line ' + IntToStr(Index + 1) + ' modified');
end;
end else
begin
raise EInvalidCodeLine.Create(Error_InvalidCodeLine);
end;
end;
function TScriptManager.GetCodeCount;
begin
Result := Code.Count;
end;
function TScriptManager.GetRunning: Boolean;
begin
Result := ScriptEngine.Running;
end;
procedure TScriptManager.Stop;
begin
ScriptEngine.Stop;
end;
function TScriptManager.GetPluginItems(Index: Integer): TPSPlugin;
begin
Result := TPSPluginItem(CustomPlugins.Items[Index]).Plugin;
end;
procedure TScriptManager.SetPluginItems(Index: Integer; const Value: TPSPlugin);
begin
TPSPluginItem(CustomPlugins.Items[Index]).Plugin := Value;
end;
function TScriptManager.GetPluginCount: Integer;
begin
Result := ScriptEngine.Plugins.Count;
end;
procedure TScriptManager.SetLibraries(const Value: TScriptLibraries);
begin
ScriptEngine.Plugins.Clear;
FLibraries := Value;
{ Import-Unit-Komponenten integrieren }
if slClasses in FLibraries then
begin
AddPlugin(ScriptEngine.Plugins,PS_Import_Classes);
end else
begin
FLibraries := FLibraries - [slControls,slStdCtrls,slForms,slDateUtils,slComObj,slDB];
end;
if slControls in FLibraries then
begin
AddPlugin(ScriptEngine.Plugins,PS_Import_Controls);
end else
begin
FLibraries := FLibraries - [slStdCtrls,slForms];
end;
if slStdCtrls in Libraries then
begin
AddPlugin(ScriptEngine.Plugins,PS_Import_StdCtrls);
end else
begin
FLibraries := FLibraries - [slForms];
end;
if slForms in FLibraries then
begin
AddPlugin(ScriptEngine.Plugins,PS_Import_Forms);
end;
if slDateUtils in FLibraries then
begin
AddPlugin(ScriptEngine.Plugins,PS_Import_DateUtils);
end;
if slComObj in FLibraries then
begin
AddPlugin(ScriptEngine.Plugins,PS_Import_ComObj);
end;
if slDB in FLibraries then
begin
AddPlugin(ScriptEngine.Plugins,PS_Import_DB);
end;
if slCustom in FLibraries then
begin
AddCustomPlugins;
end;
end;
function TScriptManager.GetUsePreProcessor: Boolean;
begin
Result := ScriptEngine.UsePreProcessor;
end;
procedure TScriptManager.SetUsePreProcessor(const Value: Boolean);
begin
ScriptEngine.UsePreProcessor := Value;
end;
function TScriptManager.GetMainFileName: AnsiString;
begin
Result := ScriptEngine.MainFileName;
end;
procedure TScriptManager.SetMainFileName(const Value: AnsiString);
begin
ScriptEngine.MainFileName := Value;
end;
function TScriptManager.GetDefines: TStrings;
begin
Result := ScriptEngine.Defines;
end;
procedure TScriptManager.SetDefines(const Value: TStrings);
begin
ScriptEngine.Defines := Value;
end;
procedure TScriptManager.AddLog(Entry: string);
const
PrefixBegin = '[';
PrefixEnd = ']';
begin
Log.Add(Entry);
if ReturnTarget = nil then
begin
raise EMissingReturnTarget.Create(Error_MissingReturnTarget);
end;
if ReturnStyle = srTime then
begin
Entry := PrefixBegin + TimeToStr(Time) + PrefixEnd + ' ' + Entry;
end;
if ReturnStyle = srDateTime then
begin
Entry := PrefixBegin + DateToStr(Date) + ' ' + TimeToStr(Time) + PrefixEnd + ' ' + Entry;
end;
if ReturnStyle = srName then
begin
if Length(Name) > 0 then
begin
Entry := PrefixBegin + Name + PrefixEnd + ' ' + Entry;
end else
begin
raise EMissingComponentName.Create(Error_MissingComponentName);
end;
end;
ReturnTarget.Add(Entry);
if Assigned(OnReturn) then
begin
OnReturn(Self,Entry);
end;
end;
procedure TScriptManager.AddCustomPlugins;
var
Index: Integer;
begin
for Index := 0 to CustomPlugins.Count - 1 do
begin
AddPlugin(ScriptEngine.Plugins,TPSPluginItem(CustomPlugins.Items[Index]).Plugin);
end;
end;
function TScriptManager.CompileAndExecute: Boolean;
begin
Result := False;
ScriptEngine.Script.Assign(Code);
if ReturnMode = srAll then
begin
AddLog('Compiling script...');
end;
if ScriptEngine.Compile = True then
begin
if ReturnMode = srAll then
begin
AddLog('Script succesfully compiled');
end;
if ReturnMode = srAll then
begin
AddLog('Executing script...');
end;
if ScriptEngine.Execute = False then
begin
if (ReturnMode = srAll) or (ReturnMode = srErrors) then
begin
AddLog(ScriptEngine.ExecErrorToString + ' at ' + Inttostr(ScriptEngine.ExecErrorProcNo) + '.'+Inttostr(ScriptEngine.ExecErrorByteCodePosition));
end;
end else
begin
if ReturnMode = srAll then
begin
AddLog('Script succesfully executed');
end;
Result := True;
end;
end else
begin
if ReturnMode = srAll then
begin
AddLog('Script compilation failed');
end;
end;
end;
function TScriptManager.CodeAddLine(const S: String): Integer;
begin
Result := Code.Add(S);
end;
procedure TScriptManager.CodeAddLines(Strings: TStrings);
begin
Code.AddStrings(Strings);
end;
procedure TScriptManager.CodeDeleteLine(Index: Integer);
begin
Code.Delete(Index);
end;
procedure TScriptManager.CodeLoadFromFile(FileName: String);
begin
Code.LoadFromFile(FileName);
if ReturnMode = srAll then
begin
AddLog('Script code loaded successfully');
end;
if Assigned(OnCodeLoad) then
begin
OnCodeLoad(Self);
end;
end;
procedure TScriptManager.CodeLoadFromStream(Stream: TStream);
begin
Code.LoadFromStream(Stream);
if ReturnMode = srAll then
begin
AddLog('Script code loaded successfully');
end;
if Assigned(OnCodeLoad) then
begin
OnCodeLoad(Self);
end;
end;
procedure TScriptManager.CodeAssign(Source: TPersistent);
begin
Code.Assign(Source);
if ReturnMode = srAll then
begin
AddLog('Script code assigned successfully');
end;
if Assigned(OnCodeAssign) then
begin
OnCodeAssign(Self);
end;
end;
procedure TScriptManager.CodeClear;
begin
Code.Clear;
if ReturnMode = srAll then
begin
AddLog('Script code cleared successfully');
end;
end;
procedure TScriptManager.PluginAdd(Plugin: TPSPlugin);
begin
AddPlugin(CustomPlugins,Plugin);
SetLibraries(Libraries);
end;
procedure TScriptManager.PluginDelete(Plugin: TPSPlugin);
begin
DeletePlugin(CustomPlugins,Plugin);
SetLibraries(Libraries);
end;
function TScriptManager.ScriptEngineNeedFile(Sender:TObject; const OriginFileName: AnsiString; var FileName, Output: AnsiString): Boolean;
begin
Result := ScriptEngine.OnNeedFile(Sender,OriginFileName,FileName,Output);
if Assigned(OnNeedFile) then
begin
OnNeedFile(Self,OriginFileName,FileName,OutPut);
end;
end;
procedure TScriptManager.ScriptEngineCompile(Sender: TPSScript);
begin
with (Sender as TPSScript) do
begin
{ VARIABLEN }
if slForms in Libraries then
begin
if Assigned(VarSelf) = True then
begin
AddRegisteredVariable('Self','TForm');
end;
if Assigned(VarApplication) = True then
begin
AddRegisteredVariable('Application','TApplication');
end;
end;
{ TYPEN }
//Comp.AddTypeS('TFileExecuteMode','(feOpen,feEdit)');
{ FUNKTIONEN }
AddMethod(Self,@TScriptManager.PS_Random,'function Random(LimitPlusOne: Integer): Integer');
//AddMethod(Self,@TScriptManager.PS_ExecuteFile,'function ExecuteFile(FileName: String; ExecMode: TFileExecuteMode): Boolean');
AddMethod(Self,@TScriptManager.PS_InputBox,'function InputBox(const ACaption, APrompt, ADefault: String): String');
AddMethod(Self,@TScriptManager.PS_InputQuery,'function InputQuery(const ACaption, APrompt: String; var Value: String): Boolean');
{ PROZEDUREN }
AddMethod(Self,@TScriptManager.PS_ShowMessage,'procedure ShowMessage (const Msg: String)');
AddMethod(Self,@TScriptManager.PS_Randomize,'procedure Randomize');
AddMethod(Self,@TScriptManager.PS_Sleep,'procedure Sleep(Milliseconds: Cardinal)');
AddMethod(Self,@TScriptManager.PS_About,'procedure About');
if SecureMode = False then
begin
AddMethod(Self,@TScriptManager.CodeAddLine,'function CodeAddLine(const S: String): Integer)');
AddMethod(Self,@TScriptManager.CodeAddLines,'procedure CodeAddLines(Strings: TStrings)');
AddMethod(Self,@TScriptManager.CodeDeleteLine,'procedure CodeDeleteLine(Index: Integer)');
AddMethod(Self,@TScriptManager.CodeLoadFromFile,'procedure CodeLoadFromFile(FileName: String)');
AddMethod(Self,@TScriptManager.CodeLoadFromStream,'procedure CodeLoadFromStream(Stream: TStream)');
AddMethod(Self,@TScriptManager.CodeAssign,'procedure CodeAssign(Source: TPersistent)');
AddMethod(Self,@TScriptManager.CodeClear,'procedure CodeClear');
AddMethod(Self,@TScriptManager.CompileAndExecute,'function CompileAndExecute: Boolean');
end;
end;
if Assigned(OnCompile) then
begin
OnCompile(Self);
end;
end;
procedure TScriptManager.ScriptEngineExecute(Sender: TPSScript);
begin
with (Sender as TPSScript) do
begin
if Assigned(VarSelf) = True then
begin
SetVarToInstance('Self',VarSelf);
end;
if Assigned(VarApplication) = True then
begin
SetVarToInstance('Application',VarApplication);
end;
end;
if Assigned(OnExecute) then
begin
OnExecute(Self);
end;
end;
procedure TScriptManager.ScriptEngineAfterExecute(Sender: TPSScript);
begin
with (Sender as TPSScript) do
begin
// ScriptEngine.Plugins.Clear; NICHT BENUTZEN!
end;
if Assigned(OnAfterExecute) then
begin
OnAfterExecute(Self);
end;
end;
procedure TScriptManager.ScriptEngineLine(Sender: TObject);
begin
with (Sender as TPSScript) do
begin
//... Nur definieren falls verwendet/ben�tigt!
end;
if Assigned(OnLine) then
begin
OnLine(Self);
end;
end;
function TScriptManager.PS_Random(LimitPlusOne: Integer): Integer;
begin
Result := Random(LimitPlusOne);
end;
function TScriptManager.PS_ExecuteFile(FileName: String; ExecMode: TFileExecuteMode): Boolean;
begin
Result := ExecuteFile(FileName,feOpen);
end;
function TScriptManager.PS_InputBox(const ACaption, APrompt, ADefault: String): String;
begin
Result := InputBox(ACaption,APrompt,ADefault);
end;
function TScriptManager.PS_InputQuery(const ACaption, APrompt: String; var Value: String): Boolean;
begin
Result := InputQuery(ACaption,APrompt,Value);
end;
procedure TScriptManager.PS_ShowMessage(const Msg: string);
begin
ShowMessage(Msg);
end;
procedure TScriptManager.PS_Randomize;
begin
Randomize;
end;
procedure TScriptManager.PS_Sleep(Milliseconds: Cardinal);
begin
Sleep(Milliseconds);
end;
procedure TScriptManager.PS_About;
begin
MessageDlg(ScriptComponent_Name + ' Component v'
+ FloatToStr(ScriptComponent_Version) + #10
+ 'For: Borland Delphi' + #10
+ ScriptComponent_Copyright + ' by '
+ ScriptComponent_Author + #10
+ 'Requires and uses: RemObjects PascalScript component library',
mtInformation,[mbOK],0);
end;
end.

186
Source/uSysTools.pas Normal file
View File

@@ -0,0 +1,186 @@
unit uSysTools;
//////////////////////////////////////
/// Lina System Tools Unit ///
/// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. ///
//////////////////////////////////////
interface
{ Da Delphi vor Version 2009 noch keine Generics kannte, musste die
TIntegerList-,TBooleanList-,TFloatList- und TPointList-Deklaration auf
Compiler-Versionen 20.0 oder h�her beschr�nkt werden.
Meines Wissens nach gibt es keine einfache M�glichkeit, Typisierte Listen
auch in �ltere Versionen zu integrieren. }
uses
{ Standard-Units }
Classes, SysUtils, Math, Windows,
{$IFNDEF NOGENERIC}
Types, Generics.Collections,
{$ENDIF}
{ Andere Package-Units }
uFileTools, uBase;
type
{ Fehlermeldungen }
EWinUserInformation = class(Exception);
type
{$IFNDEF NOGENERIC}
TIntegerList = TList<Integer>;
TBooleanList = TList<Boolean>;
TFloatList = TList<Extended>;
TPointList = TList<TPoint>;
{$ENDIF}
function BoolToInt(B: Boolean): Integer;
function IntToBool(Value: Integer): Boolean;
function StrIsInt(const S: String): Boolean;
function StrIsFloat(const S: String): Boolean;
function StrIsBool(const S: String): Boolean;
function FloatIsInt(Value: Extended): Boolean;
function SystemLanguage: String;
function WinUserName: String;
function WinUserDirectory: String;
function WinUserAdmin: Boolean;
function WinUserExists(UsrNme: String): Boolean;
implementation
function BoolToInt(B: Boolean): Integer;
begin
if B then
begin
Result := not 0;
end else
begin
Result := 0;
end;
end;
function IntToBool(Value: Integer): Boolean;
begin
Result := (Value <> 0);
end;
function StrIsInt(const S: String): Boolean;
var
TryMethodBuffer: Integer;
begin
Result := TryStrToInt(S,TryMethodBuffer);
end;
function StrIsFloat(const S: String): Boolean;
var
TryMethodBuffer: Extended;
begin
Result := TryStrToFloat(S,TryMethodBuffer);
end;
function StrIsBool(const S: String): Boolean;
var
TryMethodBuffer: Boolean;
begin
Result := TryStrToBool(S,TryMethodBuffer);
end;
function FloatIsInt(Value: Extended): Boolean;
begin
Result := (Ceil(Value) = Floor(Value));
end;
function SystemLanguage: String;
begin
Result := Languages.NameFromLocaleID[Languages.UserDefaultLocale];
end;
function WinUserName: String;
var
Buffer: array [0..255] of Char;
Size: DWord;
begin
Size := SizeOf(Buffer);
if not GetUserName(Buffer, Size) then
begin
raise EWinUserInformation.Create('Could not collect information on user name');
end;
SetString(Result,Buffer,Size - 1);
end;
function WinUserDirectory: String;
begin
Result := GetEnvironmentVariable('USERPROFILE');
end;
function WinUserAdmin: Boolean;
const
SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0,0,0,0,0,5));
SECURITY_BUILTIN_DOMAIN_RID = $00000020;
DOMAIN_ALIAS_RID_ADMINS = $00000220;
var
hAccessToken: THandle;
ptgGroups: PTokenGroups;
dwInfoBufferSize: DWORD;
psidAdministrators: PSID;
X: Integer;
bSuccess: BOOL;
begin
Result := False;
bSuccess := False;
ptgGroups := nil;
psidAdministrators := nil;
try
bSuccess := OpenThreadToken(GetCurrentThread,TOKEN_QUERY,True,hAccessToken);
if not bSuccess then
begin
if GetLastError = ERROR_NO_TOKEN then
begin
bSuccess := OpenProcessToken(GetCurrentProcess,TOKEN_QUERY,hAccessToken);
end;
end;
if bSuccess then
begin
GetMem(ptgGroups,1024);
bSuccess := GetTokenInformation(hAccessToken,TokenGroups,ptgGroups,1024,dwInfoBufferSize);
if bSuccess then
begin
AllocateAndInitializeSid(SECURITY_NT_AUTHORITY,2,SECURITY_BUILTIN_DOMAIN_RID,DOMAIN_ALIAS_RID_ADMINS,0,0,0,0,0,0,psidAdministrators);
{$R-}
for X := 0 to ptgGroups.GroupCount - 1 do
begin
if EqualSid(psidAdministrators,ptgGroups.Groups[X].Sid) then
begin
Result := True;
Break;
end;
end;
{$R+}
end;
end;
finally
if bSuccess then
begin
CloseHandle(hAccessToken);
end;
if Assigned(ptgGroups) then
begin
FreeMem(ptgGroups);
end;
if Assigned(psidAdministrators) then
begin
FreeSid(psidAdministrators);
end;
end;
end;
function WinUserExists(UsrNme: String): Boolean;
begin
//...
end;
end.

93
Source/uVirtObj.pas Normal file
View File

@@ -0,0 +1,93 @@
unit uVirtObj;
//////////////////////////////////////
/// Lina Virtual Object Unit ///
/// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. ///
//////////////////////////////////////
interface
uses
{ Standard-Units }
SysUtils, Classes,
{ Andere Package-Units }
uBase;
type
{ Hauptklassen }
{ VirtualObject }
TVirtualObject = class
end;
TVirtualObjects = array of TVirtualObject;
{ VirtualMethod }
TVirtualMethod = class
end;
TVirtualMethods = array of TVirtualMethod;
{ VirtualLirary }
TVirtualLibray = class
end;
TVirtualLibraries = array of TVirtualLibray;
{ VirtualClass }
TVirtualClass = class
end;
TVirtualClasses = array of TVirtualClass;
{ VirtualProgram }
TVirtualProgram = class(TComponent)
private
{ Private-Deklarationen }
FObjects: TVirtualObjects;
FAbout: TComponentAbout;
public
{ Public-Deklarationen }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Published-Deklarationen }
// property Objects [Index: Integer]: TVirtualObject read FObjects write FObjects;
{ Meta-Daten }
property About: TComponentAbout read FAbout;
end;
procedure Register;
const
{ Meta-Daten }
VirtualComponent_Name = 'ScriptManager';
VirtualComponent_Version = 1.0;
VirtualComponent_Copyright = 'Copyright � 2014';
VirtualComponent_Author = 'Dennis G�hlert a.o.';
implementation
procedure Register;
begin
RegisterComponents(ComponentsPage,[TVirtualProgram]);
end;
constructor TVirtualProgram.Create(AOwner: TComponent);
begin
inherited;
//...
end;
destructor TVirtualProgram.Destroy;
begin
//...
inherited;
end;
end.