📄 labradunitconversion.pas
字号:
{ Copyright (C) 2007 Markus Ansmann
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. }
{
TODO:
- Document
}
unit LabRADUnitConversion;
interface
type
TLabRADUnitConverter = function (Input: double): double;
TLabRADUnitConversionInfo = record
Factor: double;
Converter: TLabRADUnitConverter;
end;
TLabRADUnitConversion = record
Factor: double;
ToSI: TLabRADUnitConversionInfo;
FromSI: TLabRADUnitConversionInfo;
end;
{ (*}
type
TTokenInfo = record
Token: string;
ExpNum: integer;
ExpDenom: integer;
end;
TTokenList = array of TTokenInfo;
function ParseUnits(const Units: string): TTokenList;
function TestUnitConv(FromUnits, ToUnits: string): TTokenList; (**)
function LabRADConvertUnits(FromUnits, ToUnits: string): TLabRADUnitConversion;
implementation
uses Math, LabRADExceptions, LabRADLinearUnits, LabRADNonLinearUnits;
{type
TTokenInfo = record
Token: string;
ExpNum: integer;
ExpDenom: integer;
end;
TTokenList = array of TTokenInfo;{}
function ParseUnits(const Units: string): TTokenList;
var State: (psStart, psNeedSplit, psNeedUnit, psInUnit, psInExp, psNeedSplitOrExp,
psNeedExpNumOrSign, psNeedExpNum, psInExpNum, psInRealExp,
psNeedUnitOrExpDenom, psNeedSplitOrExpDenom, psInExpDenom);
NegExp: boolean;
a: integer;
curtok: TTokenInfo;
AddTok: Boolean;
n, d, t: integer;
begin
NegExp:=False;
State:=psStart;
a:=1;
setlength(Result, 0);
CurTok.Token:='';
while (a<=length(Units)) do begin
AddTok:=False;
case State of
psStart:
case Units[a] of
'A'..'Z','a'..'z','
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -