diff options
author | Erich Eckner <git@eckner.net> | 2017-07-11 13:02:04 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2017-07-11 13:02:04 +0200 |
commit | bb23ec467e7c17eea6e3a061a93e38b9f4490903 (patch) | |
tree | 9d5f0ed9f203359e301b62b6e530aba503edde98 | |
parent | d467460a03b86d3840e50f6e3821f5ef2cc826fa (diff) | |
download | epost-bb23ec467e7c17eea6e3a061a93e38b9f4490903.tar.xz |
kann jetzt auch .sif lesen
-rw-r--r-- | epost.lpi | 2 | ||||
-rw-r--r-- | epost.lps | 153 | ||||
-rw-r--r-- | epostunit.pas | 156 | ||||
-rw-r--r-- | typenunit.pas | 122 | ||||
-rw-r--r-- | werteunit.pas | 40 |
5 files changed, 395 insertions, 78 deletions
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="9"/> + <Version Value="10"/> <General> <Flags> <MainUnitHasCreateFormStatements Value="False"/> @@ -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; |