summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-07-11 13:02:04 +0200
committerErich Eckner <git@eckner.net>2017-07-11 13:02:04 +0200
commitbb23ec467e7c17eea6e3a061a93e38b9f4490903 (patch)
tree9d5f0ed9f203359e301b62b6e530aba503edde98
parentd467460a03b86d3840e50f6e3821f5ef2cc826fa (diff)
downloadepost-bb23ec467e7c17eea6e3a061a93e38b9f4490903.tar.xz
kann jetzt auch .sif lesen
-rw-r--r--epost.lpi2
-rw-r--r--epost.lps153
-rw-r--r--epostunit.pas156
-rw-r--r--typenunit.pas122
-rw-r--r--werteunit.pas40
5 files changed, 395 insertions, 78 deletions
diff --git a/epost.lpi b/epost.lpi
index 4f8aa37..f02b816 100644
--- a/epost.lpi
+++ b/epost.lpi
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
- <Version Value="9"/>
+ <Version Value="10"/>
<General>
<Flags>
<MainUnitHasCreateFormStatements Value="False"/>
diff --git a/epost.lps b/epost.lps
index 96fb618..24d8b39 100644
--- a/epost.lps
+++ b/epost.lps
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectSession>
- <Version Value="9"/>
+ <Version Value="10"/>
<BuildModes Active="Default"/>
<Units Count="24">
<Unit0>
<Filename Value="epost.lpr"/>
<IsPartOfProject Value="True"/>
- <IsVisibleTab Value="True"/>
- <TopLine Value="130"/>
- <CursorPos Y="81"/>
+ <TopLine Value="127"/>
+ <CursorPos Y="406"/>
+ <FoldState Value=" T0iUg4A123111221]6515]6[A4313[4421[S4121[85]cx"/>
<UsageCount Value="202"/>
<Loaded Value="True"/>
</Unit0>
@@ -24,9 +24,9 @@
<Filename Value="epostunit.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="1"/>
- <TopLine Value="3856"/>
- <CursorPos X="97" Y="3879"/>
- <FoldState Value=" T0/Em$0C1J"/>
+ <TopLine Value="1608"/>
+ <CursorPos Y="1587"/>
+ <FoldState Value=" T0@gk{V0G1C191g"/>
<UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit2>
@@ -40,9 +40,11 @@
<Unit4>
<Filename Value="werteunit.pas"/>
<IsPartOfProject Value="True"/>
+ <IsVisibleTab Value="True"/>
<EditorIndex Value="3"/>
- <TopLine Value="1507"/>
- <CursorPos Y="1547"/>
+ <TopLine Value="358"/>
+ <CursorPos X="39" Y="374"/>
+ <FoldState Value=" T0pgkl051X111)"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit4>
@@ -50,8 +52,8 @@
<Filename Value="typenunit.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="5"/>
- <TopLine Value="2072"/>
- <CursorPos X="98" Y="2086"/>
+ <TopLine Value="41"/>
+ <CursorPos X="43" Y="72"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit5>
@@ -60,7 +62,7 @@
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<CursorPos X="3" Y="15"/>
- <UsageCount Value="127"/>
+ <UsageCount Value="133"/>
</Unit6>
<Unit7>
<Filename Value="../units/fftunit.inc"/>
@@ -68,14 +70,14 @@
<EditorIndex Value="-1"/>
<TopLine Value="10"/>
<CursorPos X="22" Y="10"/>
- <UsageCount Value="124"/>
+ <UsageCount Value="130"/>
</Unit7>
<Unit8>
<Filename Value="gauszFit.inc"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="4"/>
<CursorPos X="35" Y="10"/>
- <UsageCount Value="30"/>
+ <UsageCount Value="36"/>
<Loaded Value="True"/>
</Unit8>
<Unit9>
@@ -83,82 +85,82 @@
<EditorIndex Value="-1"/>
<TopLine Value="1612"/>
<CursorPos X="2" Y="1675"/>
- <UsageCount Value="4"/>
+ <UsageCount Value="3"/>
</Unit9>
<Unit10>
<Filename Value="../units/mystringlistunit.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="289"/>
<CursorPos X="74" Y="300"/>
- <UsageCount Value="16"/>
+ <UsageCount Value="15"/>
</Unit10>
<Unit11>
<Filename Value="../units/lowlevelunit.pas"/>
<EditorIndex Value="2"/>
- <TopLine Value="544"/>
- <CursorPos Y="564"/>
- <UsageCount Value="44"/>
+ <TopLine Value="39"/>
+ <CursorPos X="10" Y="56"/>
+ <UsageCount Value="47"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
<Filename Value="../units/randomunit.pas"/>
<EditorIndex Value="-1"/>
- <UsageCount Value="4"/>
+ <UsageCount Value="3"/>
</Unit12>
<Unit13>
<Filename Value="../units/matheunit.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="185"/>
<CursorPos X="21" Y="188"/>
- <UsageCount Value="31"/>
+ <UsageCount Value="30"/>
</Unit13>
<Unit14>
<Filename Value="../units/systemunit.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="186"/>
<CursorPos Y="161"/>
- <UsageCount Value="16"/>
+ <UsageCount Value="15"/>
</Unit14>
<Unit15>
<Filename Value="/usr/lib/fpc/src/rtl/inc/objpash.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="182"/>
<CursorPos X="21" Y="202"/>
- <UsageCount Value="7"/>
+ <UsageCount Value="6"/>
</Unit15>
<Unit16>
<Filename Value="/usr/lib/fpc/src/rtl/unix/bunxovlh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="61"/>
<CursorPos X="10" Y="99"/>
- <UsageCount Value="5"/>
+ <UsageCount Value="4"/>
</Unit16>
<Unit17>
<Filename Value="/usr/lib/fpc/src/rtl/unix/baseunix.pp"/>
<UnitName Value="BaseUnix"/>
<EditorIndex Value="-1"/>
<TopLine Value="61"/>
- <UsageCount Value="5"/>
+ <UsageCount Value="4"/>
</Unit17>
<Unit18>
<Filename Value="/usr/lib/fpc/src/rtl/unix/bunxovl.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="414"/>
<CursorPos X="20" Y="434"/>
- <UsageCount Value="5"/>
+ <UsageCount Value="4"/>
</Unit18>
<Unit19>
<Filename Value="/usr/lib/fpc/src/rtl/linux/bunxsysc.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="16"/>
- <UsageCount Value="5"/>
+ <UsageCount Value="4"/>
</Unit19>
<Unit20>
<Filename Value="/usr/lib/fpc/src/rtl/unix/bunxh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="74"/>
<CursorPos X="15" Y="102"/>
- <UsageCount Value="5"/>
+ <UsageCount Value="4"/>
</Unit20>
<Unit21>
<Filename Value="/usr/lib/fpc/src/packages/fcl-image/src/fpimage.pp"/>
@@ -166,142 +168,143 @@
<EditorIndex Value="-1"/>
<TopLine Value="10"/>
<CursorPos X="3" Y="30"/>
- <UsageCount Value="5"/>
+ <UsageCount Value="4"/>
</Unit21>
<Unit22>
<Filename Value="../fpGUI/src/corelib/render/software/agg_basics.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="327"/>
<CursorPos X="12" Y="347"/>
- <UsageCount Value="8"/>
+ <UsageCount Value="7"/>
</Unit22>
<Unit23>
<Filename Value="/usr/lib/fpc/src/rtl/objpas/classes/classesh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="673"/>
<CursorPos X="42" Y="705"/>
- <UsageCount Value="8"/>
+ <UsageCount Value="7"/>
</Unit23>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="epostunit.pas"/>
- <Caret Line="1598" Column="31" TopLine="1593"/>
+ <Caret Line="1087" Column="46" TopLine="1058"/>
</Position1>
<Position2>
<Filename Value="epostunit.pas"/>
- <Caret Line="1597" TopLine="1576"/>
+ <Caret Line="1867" Column="39" TopLine="1089"/>
</Position2>
<Position3>
<Filename Value="epostunit.pas"/>
- <Caret Line="117" Column="67" TopLine="98"/>
+ <Caret Line="1086" Column="43" TopLine="1063"/>
</Position3>
<Position4>
<Filename Value="epostunit.pas"/>
- <Caret Line="147" Column="25" TopLine="115"/>
+ <Caret Line="1087" Column="42" TopLine="1087"/>
</Position4>
<Position5>
- <Filename Value="werteunit.pas"/>
- <Caret Line="1258" Column="69" TopLine="1254"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="89" Column="43" TopLine="71"/>
</Position5>
<Position6>
<Filename Value="epostunit.pas"/>
- <Caret Line="5008" Column="83" TopLine="5003"/>
+ <Caret Line="1087" Column="46" TopLine="1058"/>
</Position6>
<Position7>
<Filename Value="epostunit.pas"/>
- <Caret Line="284" Column="84" TopLine="284"/>
+ <Caret Line="1697" Column="126" TopLine="1675"/>
</Position7>
<Position8>
<Filename Value="epostunit.pas"/>
- <Caret Line="2734" Column="59" TopLine="2655"/>
+ <Caret Line="1846" Column="39" TopLine="1845"/>
</Position8>
<Position9>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2729" TopLine="2676"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="45" Column="25" TopLine="30"/>
</Position9>
<Position10>
- <Filename Value="epostunit.pas"/>
- <Caret Line="5042" Column="5" TopLine="5023"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="662" Column="37" TopLine="376"/>
</Position10>
<Position11>
- <Filename Value="werteunit.pas"/>
- <Caret Line="65" Column="23" TopLine="46"/>
+ <Filename Value="../units/lowlevelunit.pas"/>
+ <Caret Line="56" Column="21" TopLine="39"/>
</Position11>
<Position12>
- <Filename Value="werteunit.pas"/>
- <Caret Line="1404" Column="83" TopLine="1379"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="1862" Column="75" TopLine="1848"/>
</Position12>
<Position13>
- <Filename Value="werteunit.pas"/>
- <Caret Line="1403" Column="19" TopLine="1247"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="662" TopLine="645"/>
</Position13>
<Position14>
- <Filename Value="werteunit.pas"/>
- <Caret Line="65" Column="78" TopLine="47"/>
+ <Filename Value="../units/lowlevelunit.pas"/>
+ <Caret Line="351" Column="21" TopLine="322"/>
</Position14>
<Position15>
- <Filename Value="epostunit.pas"/>
- <Caret Line="277" Column="18" TopLine="258"/>
+ <Filename Value="../units/lowlevelunit.pas"/>
+ <Caret Line="662" TopLine="644"/>
</Position15>
<Position16>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2769" Column="105" TopLine="2758"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="555" Column="54" TopLine="530"/>
</Position16>
<Position17>
- <Filename Value="werteunit.pas"/>
- <Caret Line="1394" Column="17" TopLine="1372"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="622" TopLine="604"/>
</Position17>
<Position18>
- <Filename Value="werteunit.pas"/>
- <Caret Line="1408" Column="27" TopLine="1388"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="89" Column="43" TopLine="71"/>
</Position18>
<Position19>
<Filename Value="werteunit.pas"/>
+ <Caret Line="663" Column="25" TopLine="370"/>
</Position19>
<Position20>
<Filename Value="werteunit.pas"/>
- <Caret Line="1410" Column="36" TopLine="1386"/>
+ <Caret Line="666" Column="9" TopLine="618"/>
</Position20>
<Position21>
<Filename Value="werteunit.pas"/>
- <Caret Line="1409" Column="121" TopLine="1389"/>
+ <Caret Line="665" Column="54" TopLine="618"/>
</Position21>
<Position22>
<Filename Value="werteunit.pas"/>
- <Caret Line="1408" Column="105" TopLine="1388"/>
+ <Caret Line="666" Column="43" TopLine="384"/>
</Position22>
<Position23>
<Filename Value="werteunit.pas"/>
- <Caret Line="1407" Column="116" TopLine="1387"/>
+ <Caret Line="667" Column="59" TopLine="381"/>
</Position23>
<Position24>
<Filename Value="werteunit.pas"/>
- <Caret Line="1406" Column="90" TopLine="1386"/>
+ <Caret Line="682" Column="27" TopLine="618"/>
</Position24>
<Position25>
<Filename Value="werteunit.pas"/>
- <Caret Line="1405" Column="81" TopLine="1385"/>
+ <Caret Line="667" Column="69" TopLine="618"/>
</Position25>
<Position26>
<Filename Value="werteunit.pas"/>
- <Caret Line="1407" Column="101" TopLine="1385"/>
+ <Caret Line="685" TopLine="668"/>
</Position26>
<Position27>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2783" Column="9" TopLine="2748"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="1025" TopLine="1008"/>
</Position27>
<Position28>
- <Filename Value="epostunit.pas"/>
- <Caret Line="4573" Column="92" TopLine="4545"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="706" TopLine="689"/>
</Position28>
<Position29>
- <Filename Value="epostunit.pas"/>
- <Caret Line="3876" TopLine="3857"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="45" Column="25" TopLine="29"/>
</Position29>
<Position30>
- <Filename Value="epostunit.pas"/>
- <Caret Line="3767" TopLine="3748"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="691" Column="32" TopLine="667"/>
</Position30>
</JumpHistory>
</ProjectSession>
diff --git a/epostunit.pas b/epostunit.pas
index 2dc9bf6..36a3de8 100644
--- a/epostunit.pas
+++ b/epostunit.pas
@@ -1062,6 +1062,19 @@ begin
dateien[length(dateien)-1].Name:=s;
continue;
end;
+ if startetMit('Andor-Datei:',s) then begin
+ if fileexists(s) then begin
+ setlength(dateien,length(dateien)+1);
+ dateien[length(dateien)-1]:=tAndorInputDateiInfo.create(Vorlagen.AndorVorlage);
+ dateien[length(dateien)-1].Name:=s;
+ continue;
+ end;
+ if not findeAlleDateien(s,dateien,Vorlagen.AndorVorlage) then begin
+ aufraeumen;
+ exit;
+ end;
+ continue;
+ end;
gibAus('Verstehe Parameter '''+s+''' nicht beim Einlesen!',3);
aufraeumen;
exit;
@@ -1080,7 +1093,7 @@ var
tmpe: extended;
f: file;
tf: textfile;
- Positionen: tLongintArray;
+ Positionen,iArr: tLongintArray;
Sortiert: tGenerischeInputDateiInfoArray;
ipp,ipap: tProcess;
buf: array of byte;
@@ -1435,6 +1448,144 @@ begin
close(f);
Positionen[i]:=0;
end;
+ if dateien[i] is tAndorInputDateiInfo then begin
+ if (i<>0) or (length(dateien)<>1) then begin
+ gibAus('Ich kann Andor-Dateien nicht kaskadieren!',3);
+ exit;
+ end;
+ assignfile(f,dateien[i].Name);
+ reset(f,1);
+ readALine(f,s);
+ if s<>'Andor Technology Multi-Channel File' then begin
+ gibAus('Syntax-Fehler in '''+dateien[i].Name+''': erkenne Andor Datei nicht!',3);
+ closefile(f);
+ exit;
+ end;
+ readALine(f,s);
+ if s<>'65538 1' then begin
+ gibAus('Syntax-Fehler in '''+dateien[i].Name+''': diese Andor Datei hält der strengen Prüfung nicht stand!',3);
+ closefile(f);
+ exit;
+ end;
+ readALine(f,s);
+ for j:=0 to 4 do
+ erstesArgument(s,' ',false);
+ (dateien[i] as TAndorInputDateiInfo).temperatur:=strToFloat(erstesArgument(s,' ',false));
+ for j:=6 to 11 do
+ erstesArgument(s,' ',false);
+ (dateien[i] as TAndorInputDateiInfo).belichtungsZeit:=strToFloat(erstesArgument(s,' ',false));
+ (dateien[i] as TAndorInputDateiInfo).zyklusZeit:=strToFloat(erstesArgument(s,' ',false));
+ (dateien[i] as TAndorInputDateiInfo).akkumulierteZyklusZeit:=strToFloat(erstesArgument(s,' ',false));
+ (dateien[i] as TAndorInputDateiInfo).akkumulierteZyklen:=strToInt64(erstesArgument(s,' ',false));
+ erstesArgument(s,' ',false); // 16
+ (dateien[i] as TAndorInputDateiInfo).zyklusStapelZeit:=strToFloat(erstesArgument(s,' ',false));
+ (dateien[i] as TAndorInputDateiInfo).pixelAusleseZeit:=strToFloat(erstesArgument(s,' ',false));
+ for j:=19 to 20 do
+ erstesArgument(s,' ',false);
+ (dateien[i] as TAndorInputDateiInfo).verstaerkungADW:=strToFloat(erstesArgument(s,' ',false));
+ for j:=22 to 75 do
+ erstesArgument(s,' ',false);
+ try
+ readAnAndorString(f,(dateien[i] as TAndorInputDateiInfo).detektorTyp,strToInt64(s),true);
+ except
+ gibAus('Syntax-Fehler in '''+dateien[i].Name+''': Detektor-String nicht lesbar!',3);
+ closeFile(f);
+ exit;
+ end;
+ readALine(f,s);
+ s:=trim(s);
+ (dateien[i] as TAndorInputDateiInfo).detektorGroesze['x']:=strToInt64(erstesArgument(s,' ',false));
+ (dateien[i] as TAndorInputDateiInfo).detektorGroesze['y']:=strToInt64(erstesArgument(s,' ',false));
+ try
+ readAnAndorString(f,(dateien[i] as TAndorInputDateiInfo).dateiName,strToInt64(s),true);
+ except
+ gibAus('Syntax-Fehler in '''+dateien[i].Name+''': originale Dateiname nicht lesbar!',3);
+ closeFile(f);
+ exit;
+ end;
+ readALine(f,s);
+ erstesArgument(s);
+ seek(f,filePos(f)+strToInt64(s));
+ for j:=0 to 2 do
+ readALine(f,s);
+ for j:=0 to 2 do
+ erstesArgument(s,' ',false);
+ dateien[i].xstart:=strToFloat(erstesArgument(s,' ',false));
+ (dateien[i] as TAndorInputDateiInfo).shutterZeit['x']:=strToFloat(erstesArgument(s,' ',false));
+ (dateien[i] as TAndorInputDateiInfo).shutterZeit['y']:=strToFloat(erstesArgument(s,' ',false));
+ erstesArgument(s,' ',false); // Gitter-abstand?
+ dateien[i].xstop:=strToFloat(erstesArgument(s,'nm',false));
+ for j:=0 to (dateien[i] as TAndorInputDateiInfo).detectorSkipLines-1 do
+ readALine(f,s);
+ try
+ readAnAndorString(f,(dateien[i] as TAndorInputDateiInfo).xAchsenTitel,false);
+ readAnAndorString(f,(dateien[i] as TAndorInputDateiInfo).datenTypTitel,false);
+ readAnAndorString(f,(dateien[i] as TAndorInputDateiInfo).yAchsenTitel,false);
+ except
+ gibAus('Syntax-Fehler in '''+dateien[i].Name+''': Achsenbeschriftung nicht lesbar!',3);
+ closeFile(f);
+ exit;
+ end;
+ readALine(f,s);
+ readALine(f,t);
+ splitStrToInt(s+' '+t,iArr);
+ if (iArr[0]<>65541) or (iArr[9]<>65538) or (iArr[13]<>1) or (iArr[16]<>0) then begin
+ gibAus('Syntax-Fehler in '''+dateien[i].Name+''': inkonsistenter Kopf.',3);
+ closefile(f);
+ exit;
+ end;
+ (dateien[i] as TAndorInputDateiInfo).bildBereich['x','x']:=iArr[1];
+ (dateien[i] as TAndorInputDateiInfo).bildBereich['x','y']:=iArr[3];
+ (dateien[i] as TAndorInputDateiInfo).bildBereich['y','x']:=iArr[4];
+ (dateien[i] as TAndorInputDateiInfo).bildBereich['y','y']:=iArr[2];
+ (dateien[i] as TAndorInputDateiInfo).bildBereichStapel['x']:=iArr[6];
+ (dateien[i] as TAndorInputDateiInfo).bildBereichStapel['y']:=iArr[5];
+ (dateien[i] as TAndorInputDateiInfo).rahmenBereich['x','x']:=iArr[10];
+ (dateien[i] as TAndorInputDateiInfo).rahmenBereich['x','y']:=iArr[12];
+ (dateien[i] as TAndorInputDateiInfo).rahmenBereich['x','x']:=iArr[13];
+ (dateien[i] as TAndorInputDateiInfo).rahmenBereich['x','y']:=iArr[11];
+ (dateien[i] as TAndorInputDateiInfo).rahmenToepfe['x']:=iArr[15];
+ (dateien[i] as TAndorInputDateiInfo).rahmenToepfe['y']:=iArr[14];
+
+ j:=(dateien[i] as TAndorInputDateiInfo).bildBereichStapel['y'] -
+ (dateien[i] as TAndorInputDateiInfo).bildBereichStapel['x'] + 1;
+ if j<>1 then begin
+ gibAus('So ein Mist - Ich kenn hier nur den Wert "1" in '''+dateien[i].Name+'''.',3);
+ closeFile(f);
+ exit;
+ end;
+ dateien[i].xsteps:=
+ ((dateien[i] as TAndorInputDateiInfo).bildBereich['x','y']-
+ (dateien[i] as TAndorInputDateiInfo).bildBereich['x','x']+1) div
+ (dateien[i] as TAndorInputDateiInfo).rahmenToepfe['x'];
+ dateien[i].tsiz:=
+ ((dateien[i] as TAndorInputDateiInfo).bildBereich['y','y']-
+ (dateien[i] as TAndorInputDateiInfo).bildBereich['y','x']+1) div
+ (dateien[i] as TAndorInputDateiInfo).rahmenToepfe['y'];
+ if (dateien[i].xsteps*dateien[i].tsiz <> iArr[8]) or
+ (iArr[8]*j <> iArr[7]) then begin
+ gibAus('Syntax-Fehler in '''+dateien[i].Name+''': inkonsistenter Kopf.',3);
+ closefile(f);
+ exit;
+ end;
+ while j>=0 do begin
+ readAnAndorString(f,s,false); // labels
+ dec(j);
+ end;
+ (dateien[i] as TAndorInputDateiInfo).datenStart:=filePos(f);
+ seek(f,(dateien[i] as TAndorInputDateiInfo).datenStart+dateien[i].xsteps*dateien[i].tsiz*sizeof(single));
+ try
+ readAnAndorString(f,s,false);
+ except
+ s:='falsch';
+ end;
+ if s<>'' then begin
+ gibAus('Syntax-Fehler in '''+dateien[i].Name+''': vmtl. zu viele/wenige Daten.',3);
+ closefile(f);
+ exit;
+ end;
+ closefile(f);
+ end;
end;
_tsiz:=0;
@@ -1451,7 +1602,8 @@ begin
end;
end;
- if dateien[0] is tSergeyInputDateiInfo then begin
+ if (dateien[0] is tSergeyInputDateiInfo) or
+ (dateien[0] is tAndorInputDateiInfo) then begin
transformationen.xstart:=Dateien[0].xstart;
transformationen.xstop:=Dateien[0].xstop;
transformationen.tstart:=Dateien[0].tstart;
diff --git a/typenunit.pas b/typenunit.pas
index 7d77d64..b9c6931 100644
--- a/typenunit.pas
+++ b/typenunit.pas
@@ -64,6 +64,23 @@ type
function AnalysatorExecutable: string;
function AnalysatorParametersText: string;
end;
+ tAndorInputDateiInfo = class (tGenerischeInputDateiInfo)
+ temperatur,belichtungsZeit,
+ zyklusZeit,akkumulierteZyklusZeit,
+ zyklusStapelZeit,pixelAusleseZeit,
+ verstaerkungADW: extended;
+ akkumulierteZyklen,datenStart: int64;
+ detektorTyp,dateiName,xAchsenTitel,
+ yAchsenTitel,datenTypTitel: string;
+ detektorGroesze,bildBereichStapel,
+ rahmenToepfe: tIntPoint;
+ bildBereich,rahmenBereich: t2x2Longint;
+ shutterZeit: tExtPoint;
+ constructor create(Vorlage: tGenerischeInputDateiInfo); overload;
+ constructor create; overload;
+ destructor destroy; override;
+ function detectorSkipLines: int64;
+ end;
tGenerischeInputDateiInfoArray = specialize tArray<tGenerischeInputDateiInfo>;
tInputDateiInfoVorlagen = class
private
@@ -100,6 +117,7 @@ type
TraceVorlage: tTraceInputDateiInfo;
SergeyVorlage: tSergeyInputDateiInfo;
PipeVorlage: tPipeInputDateiInfo;
+ AndorVorlage: tAndorInputDateiInfo;
property Fehlerbehebungskommando: string
read _Fehlerbehebungskommando
write wFehlerbehebungskommando;
@@ -702,6 +720,97 @@ begin
result[pos(' ',result)]:=#13;
end;
+// tAndorInputDateiInfo *******************************************************
+
+constructor tAndorInputDateiInfo.create(Vorlage: tGenerischeInputDateiInfo);
+begin
+ inherited create(Vorlage);
+ if Vorlage is tAndorInputDateiInfo then begin
+ temperatur:=(Vorlage as tAndorInputDateiInfo).temperatur;
+ belichtungsZeit:=(Vorlage as tAndorInputDateiInfo).belichtungsZeit;
+ zyklusZeit:=(Vorlage as tAndorInputDateiInfo).zyklusZeit;
+ akkumulierteZyklusZeit:=(Vorlage as tAndorInputDateiInfo).akkumulierteZyklusZeit;
+ akkumulierteZyklen:=(Vorlage as tAndorInputDateiInfo).akkumulierteZyklen;
+ zyklusStapelZeit:=(Vorlage as tAndorInputDateiInfo).zyklusStapelZeit;
+ pixelAusleseZeit:=(Vorlage as tAndorInputDateiInfo).pixelAusleseZeit;
+ verstaerkungADW:=(Vorlage as tAndorInputDateiInfo).verstaerkungADW;
+ detektorTyp:=(Vorlage as tAndorInputDateiInfo).detektorTyp;
+ dateiName:=(Vorlage as tAndorInputDateiInfo).dateiName;
+ detektorGroesze:=(Vorlage as tAndorInputDateiInfo).detektorGroesze;
+ shutterZeit:=(Vorlage as tAndorInputDateiInfo).shutterZeit;
+ xAchsenTitel:=(Vorlage as tAndorInputDateiInfo).xAchsenTitel;
+ yAchsenTitel:=(Vorlage as tAndorInputDateiInfo).yAchsenTitel;
+ datenTypTitel:=(Vorlage as tAndorInputDateiInfo).datenTypTitel;
+ bildBereichStapel:=(Vorlage as tAndorInputDateiInfo).bildBereichStapel;
+ rahmenToepfe:=(Vorlage as tAndorInputDateiInfo).rahmenToepfe;
+ bildBereich:=(Vorlage as tAndorInputDateiInfo).bildBereich;
+ rahmenBereich:=(Vorlage as tAndorInputDateiInfo).rahmenBereich;
+ end
+ else begin
+ temperatur:=0;
+ belichtungsZeit:=0;
+ zyklusZeit:=0;
+ akkumulierteZyklusZeit:=0;
+ akkumulierteZyklen:=0;
+ zyklusStapelZeit:=0;
+ pixelAusleseZeit:=0;
+ verstaerkungADW:=1;
+ detektorTyp:='unbekannt';
+ dateiName:='';
+ detektorGroesze:=intPoint(0,0);
+ shutterZeit:=extPoint(0,0);
+ xAchsenTitel:='';
+ yAchsenTitel:='';
+ datenTypTitel:='';
+ bildBereichStapel:=intPoint(0,0);
+ rahmenToepfe:=intPoint(0,0);
+ bildBereich:=_2x2Longint(0,0,0,0);
+ rahmenBereich:=_2x2Longint(0,0,0,0);
+ end;
+end;
+
+constructor tAndorInputDateiInfo.create;
+begin
+ inherited create;
+ temperatur:=0;
+ belichtungsZeit:=0;
+ zyklusZeit:=0;
+ akkumulierteZyklusZeit:=0;
+ akkumulierteZyklen:=0;
+ zyklusStapelZeit:=0;
+ pixelAusleseZeit:=0;
+ verstaerkungADW:=1;
+ detektorTyp:='unbekannt';
+ dateiName:='';
+ detektorGroesze:=intPoint(0,0);
+ shutterZeit:=extPoint(0,0);
+ xAchsenTitel:='';
+ yAchsenTitel:='';
+ datenTypTitel:='';
+ bildBereichStapel:=intPoint(0,0);
+ rahmenToepfe:=intPoint(0,0);
+ bildBereich:=_2x2Longint(0,0,0,0);
+ rahmenBereich:=_2x2Longint(0,0,0,0);
+end;
+
+destructor tAndorInputDateiInfo.destroy;
+begin
+ detektorTyp:='';
+ dateiName:='';
+ inherited destroy;
+end;
+
+function tAndorInputDateiInfo.detectorSkipLines: int64;
+begin
+ result:=15;
+ if pos('Luc',detektorTyp)>0 then
+ result:=result+2;
+ if detektorTyp='DV436' then
+ result:=result+9;
+ if detektorTyp='DU920P_BR,DD' then
+ result:=result+10;
+end;
+
// tInputDateiInfoVorlagen *****************************************************
constructor tInputDateiInfoVorlagen.create;
@@ -712,6 +821,7 @@ begin
TraceVorlage:=tTraceInputDateiInfo.create;
SergeyVorlage:=tSergeyInputDateiInfo.create;
PipeVorlage:=tPipeInputDateiInfo.create;
+ AndorVorlage:=tAndorInputDateiInfo.create;
fillchar(_Name,sizeof(_Name),#0);
Name:=SpaceTimeVorlage.Name;
fillchar(_Fehlerbehebungskommando,sizeof(_Fehlerbehebungskommando),#0);
@@ -741,6 +851,7 @@ begin
TraceVorlage.free;
SergeyVorlage.free;
PipeVorlage.free;
+ AndorVorlage.free;
_Name:='';
_Fehlerbehebungskommando:='';
_Analysator:='';
@@ -755,6 +866,7 @@ begin
TraceVorlage.Fehlerbehebungskommando:=f;
SergeyVorlage.Fehlerbehebungskommando:=f;
PipeVorlage.Fehlerbehebungskommando:=f;
+ AndorVorlage.Fehlerbehebungskommando:=f;
end;
procedure tInputDateiInfoVorlagen.wName(n: string);
@@ -765,6 +877,7 @@ begin
TraceVorlage.Name:=n;
SergeyVorlage.Name:=n;
PipeVorlage.Name:=n;
+ AndorVorlage.Name:=n;
end;
procedure tInputDateiInfoVorlagen.wGamma(g: extended);
@@ -785,6 +898,7 @@ begin
TraceVorlage.tstart:=t;
SergeyVorlage.tstart:=t;
PipeVorlage.tstart:=t;
+ AndorVorlage.tstart:=t;
end;
procedure tInputDateiInfoVorlagen.wTStop(t: extended);
@@ -795,6 +909,7 @@ begin
TraceVorlage.tstop:=t;
SergeyVorlage.tstop:=t;
PipeVorlage.tstop:=t;
+ AndorVorlage.tstop:=t;
end;
procedure tInputDateiInfoVorlagen.wXStart(x: extended);
@@ -805,6 +920,7 @@ begin
TraceVorlage.xstart:=x;
SergeyVorlage.xstart:=x;
PipeVorlage.xstart:=x;
+ AndorVorlage.xstart:=x;
end;
procedure tInputDateiInfoVorlagen.wXStop(x: extended);
@@ -815,6 +931,7 @@ begin
TraceVorlage.xstop:=x;
SergeyVorlage.xstop:=x;
PipeVorlage.xstop:=x;
+ AndorVorlage.xstop:=x;
end;
procedure tInputDateiInfoVorlagen.wT0Abs(t: longint);
@@ -825,6 +942,7 @@ begin
TraceVorlage.t0abs:=t;
SergeyVorlage.t0abs:=t;
PipeVorlage.t0abs:=t;
+ AndorVorlage.t0abs:=t;
end;
procedure tInputDateiInfoVorlagen.wGroeszenFaktor(g: extended);
@@ -845,6 +963,7 @@ begin
TraceVorlage.Genauigkeit:=g;
SergeyVorlage.Genauigkeit:=g;
PipeVorlage.Genauigkeit:=g;
+ AndorVorlage.Genauigkeit:=g;
end;
procedure tInputDateiInfoVorlagen.wTSiz(t: longint);
@@ -855,6 +974,7 @@ begin
TraceVorlage.tsiz:=t;
SergeyVorlage.tsiz:=t;
PipeVorlage.tsiz:=t;
+ AndorVorlage.tsiz:=t;
end;
procedure tInputDateiInfoVorlagen.wXSteps(x: longint);
@@ -865,6 +985,7 @@ begin
TraceVorlage.xsteps:=x;
SergeyVorlage.xsteps:=x;
PipeVorlage.xsteps:=x;
+ AndorVorlage.xsteps:=x;
end;
procedure tInputDateiInfoVorlagen.wSpurNummer(s: longint);
@@ -922,6 +1043,7 @@ begin
TraceVorlage.params:=p;
SergeyVorlage.params:=p;
PipeVorlage.params:=p;
+ AndorVorlage.params:=p;
end;
// tFenster ********************************************************************
diff --git a/werteunit.pas b/werteunit.pas
index a643a7b..fdae91a 100644
--- a/werteunit.pas
+++ b/werteunit.pas
@@ -371,6 +371,7 @@ var
ipp: tProcess;
buf: tByteArray;
etwasGelesen: boolean;
+ s: string;
begin
result:=false;
gibAus('... Dateien einlesen ...',1);
@@ -656,6 +657,45 @@ begin
close(f);
etwasGelesen:=true;
end;
+ if dateien[i] is tAndorInputDateiInfo then begin
+ etsiz:=dateien[i].tsiz;
+
+ assign(f,dateien[i].Name);
+ reset(f,1);
+ seek(f,(dateien[i] as tAndorInputDateiInfo).datenStart);
+ tmpi:=wertGroesze(dateien[i].genauigkeit);
+ if tmpi = sizeOf(wgen) then
+ blockread(f,werte[0],dateien[i].xsteps*dateien[i].tsiz*tmpi)
+ else case dateien[i].genauigkeit of
+ gSingle:
+ for j:=0 to dateien[i].xsteps*dateien[i].tsiz-1 do begin
+ blockread(f,tmps,tmpi);
+ werte[j]:=tmps;
+ end;
+ gDouble:
+ for j:=0 to dateien[i].xsteps*dateien[i].tsiz-1 do begin
+ blockread(f,tmpd,tmpi);
+ werte[j]:=tmpd;
+ end;
+ gExtended:
+ for j:=0 to dateien[i].xsteps*dateien[i].tsiz-1 do begin
+ blockread(f,tmpe,tmpi);
+ werte[j]:=tmpe;
+ end;
+ end{of case};
+ try
+ readAnAndorString(f,s,false);
+ except
+ s:='falsch';
+ end;
+ if s<>'' then begin
+ gibAus('Syntax-Fehler in '''+dateien[i].Name+''': vmtl. zu viele/wenige Daten.',3);
+ closefile(f);
+ exit;
+ end;
+ close(f);
+ etwasGelesen:=true;
+ end;
if not etwasGelesen then begin
gibAus('Ich habe diese Runde keine Daten gelesen!',3);
exit;