summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epost.lpi6
-rw-r--r--epost.lpr20
-rw-r--r--epost.lps146
-rw-r--r--epostunit.pas132
-rw-r--r--fileunit.pas238
-rw-r--r--typenunit.pas340
-rw-r--r--werteunit.pas6
7 files changed, 168 insertions, 720 deletions
diff --git a/epost.lpi b/epost.lpi
index 7e4fb4b..980f218 100644
--- a/epost.lpi
+++ b/epost.lpi
@@ -50,22 +50,18 @@
<Unit2>
<Filename Value="epostunit.pas"/>
<IsPartOfProject Value="True"/>
- <UnitName Value="epostunit"/>
</Unit2>
<Unit3>
<Filename Value="fileunit.pas"/>
<IsPartOfProject Value="True"/>
- <UnitName Value="fileunit"/>
</Unit3>
<Unit4>
<Filename Value="werteunit.pas"/>
<IsPartOfProject Value="True"/>
- <UnitName Value="werteunit"/>
</Unit4>
<Unit5>
<Filename Value="typenunit.pas"/>
<IsPartOfProject Value="True"/>
- <UnitName Value="typenunit"/>
</Unit5>
</Units>
</ProjectOptions>
@@ -76,7 +72,7 @@
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
- <OtherUnitFiles Value="/home_raid/erich/Dokumente/Prograemmchen/fpGUI/src/corelib/render/software/"/>
+ <OtherUnitFiles Value="/home_raid/erich/Dokumente/Prograemmchen/fpGUI/src/corelib/render/software/;../units"/>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<CodeGeneration>
diff --git a/epost.lpr b/epost.lpr
index b93a79f..ae3e0fd 100644
--- a/epost.lpr
+++ b/epost.lpr
@@ -10,10 +10,10 @@ uses
{$ENDIF}{$ENDIF}
Classes,
{ you can add units after this }
- sysutils, epostunit, fileunit, typenunit;
+ sysutils, epostunit, mystringlistunit, typenunit, lowlevelunit;
var maxthreads,i,j,k: longint;
- inf: tInputfile;
+ inf: tMyStringlist;
s: string;
b,syntaxtest,parallelLesen: boolean;
wertes: tWerteArray;
@@ -55,18 +55,22 @@ begin
setlength(wertes,0);
setlength(Konturen,0);
behalteLogs:=(paramcount=2) and (paramstr(2)='-L');
- inf:=tInputfile.create;
- inf.einlesen(paramstr(1));
+ inf:=tMyStringlist.create;
+ inf.loadFromFile(paramstr(1));
+ if not inf.unfoldMacros then begin
+ gibAus('Fehlerhafte input-Datei '''+paramstr(1)+'''!',3);
+ halt(1);
+ end;
for syntaxtest:=true downto false do begin
if not syntaxtest then
gibAus('Syntaxtest bestanden!',3);
- inf.anAnfang;
- while inf.gibZeile(s) do begin
+ inf.rewind;
+ while inf.readln(s) do begin
i:=0;
while i<length(wertes) do begin
wertes[i].beendeLeseThreadWennFertig;
- if (wertes[i].bezeichner<>'') and not inf.brauchenoch(wertes[i].bezeichner) then begin
+ if (wertes[i].bezeichner<>'') and not inf.stillNeed(wertes[i].bezeichner) then begin
gibAus('Müllabfuhr löscht Wert Nummer '+inttostr(i)+' mit Bezeichner '''+wertes[i].bezeichner+'''!',3);
wertes[i].free;
for j:=i+1 to length(wertes)-1 do
@@ -78,7 +82,7 @@ begin
end;
i:=0;
while i<length(Konturen) do begin
- if (Konturen[i].bezeichner<>'') and not inf.brauchenoch(Konturen[i].bezeichner) then begin
+ if (Konturen[i].bezeichner<>'') and not inf.stillNeed(Konturen[i].bezeichner) then begin
gibAus('Müllabfuhr löscht Kontur Nummer '+inttostr(i)+' mit Bezeichner '''+Konturen[i].bezeichner+'''!',3);
Konturen[i].free;
for j:=i+1 to length(Konturen)-1 do
diff --git a/epost.lps b/epost.lps
index e39f0cd..38b59fd 100644
--- a/epost.lps
+++ b/epost.lps
@@ -3,14 +3,14 @@
<ProjectSession>
<Version Value="9"/>
<BuildModes Active="Default"/>
- <Units Count="7">
+ <Units Count="10">
<Unit0>
<Filename Value="epost.lpr"/>
<IsPartOfProject Value="True"/>
<IsVisibleTab Value="True"/>
- <TopLine Value="67"/>
- <CursorPos X="38" Y="65"/>
- <FoldState Value=" T0iNVB011171221211]B4[65]E[44]J[O7]CA"/>
+ <TopLine Value="65"/>
+ <CursorPos X="61" Y="85"/>
+ <FoldState Value=" T0j8S8612212111114[65]E[44]J[O7]CB"/>
<UsageCount Value="202"/>
<Loaded Value="True"/>
</Unit0>
@@ -24,38 +24,35 @@
<Unit2>
<Filename Value="epostunit.pas"/>
<IsPartOfProject Value="True"/>
- <UnitName Value="epostunit"/>
<EditorIndex Value="2"/>
- <TopLine Value="1954"/>
- <CursorPos X="38" Y="1963"/>
- <FoldState Value=" T3of0C6 piXjG04D[95M06611 T0j?20{1S"/>
+ <TopLine Value="4903"/>
+ <CursorPos X="80" Y="4924"/>
+ <FoldState Value=" T3of0C6 piXjG04D[95M06521 T0j?20{1F"/>
<UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
<Filename Value="fileunit.pas"/>
<IsPartOfProject Value="True"/>
- <UnitName Value="fileunit"/>
- <EditorIndex Value="1"/>
+ <EditorIndex Value="-1"/>
+ <CursorPos Y="204"/>
<UsageCount Value="200"/>
- <Loaded Value="True"/>
</Unit3>
<Unit4>
<Filename Value="werteunit.pas"/>
<IsPartOfProject Value="True"/>
- <UnitName Value="werteunit"/>
<EditorIndex Value="3"/>
- <CursorPos X="46" Y="46"/>
+ <TopLine Value="1082"/>
+ <CursorPos X="33" Y="1102"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="typenunit.pas"/>
<IsPartOfProject Value="True"/>
- <UnitName Value="typenunit"/>
<EditorIndex Value="4"/>
- <TopLine Value="1575"/>
- <CursorPos X="21" Y="1584"/>
+ <TopLine Value="1789"/>
+ <CursorPos X="23" Y="1809"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit5>
@@ -66,124 +63,145 @@
<CursorPos X="2" Y="1675"/>
<UsageCount Value="10"/>
</Unit6>
+ <Unit7>
+ <Filename Value="../units/mystringlistunit.pas"/>
+ <EditorIndex Value="1"/>
+ <TopLine Value="310"/>
+ <UsageCount Value="11"/>
+ <Loaded Value="True"/>
+ </Unit7>
+ <Unit8>
+ <Filename Value="../units/lowlevelunit.pas"/>
+ <EditorIndex Value="5"/>
+ <UsageCount Value="11"/>
+ <Loaded Value="True"/>
+ </Unit8>
+ <Unit9>
+ <Filename Value="../units/randomunit.pas"/>
+ <EditorIndex Value="-1"/>
+ <UsageCount Value="10"/>
+ </Unit9>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="epostunit.pas"/>
- <Caret Line="3085" Column="17" TopLine="3078"/>
+ <Caret Line="326" Column="58" TopLine="302"/>
</Position1>
<Position2>
<Filename Value="epostunit.pas"/>
- <Caret Line="3082" TopLine="3080"/>
+ <Caret Line="642" Column="67" TopLine="595"/>
</Position2>
<Position3>
- <Filename Value="werteunit.pas"/>
- <Caret Line="703" Column="26" TopLine="685"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="678" Column="19" TopLine="659"/>
</Position3>
<Position4>
- <Filename Value="werteunit.pas"/>
- <Caret Line="298" TopLine="275"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="1265" Column="62" TopLine="1245"/>
</Position4>
<Position5>
- <Filename Value="werteunit.pas"/>
- <Caret Line="1097" TopLine="1055"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="1444" Column="63" TopLine="1424"/>
</Position5>
<Position6>
- <Filename Value="werteunit.pas"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="1460" Column="20" TopLine="1440"/>
</Position6>
<Position7>
- <Filename Value="werteunit.pas"/>
- <Caret Line="43" Column="27" TopLine="8"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="1565" Column="67" TopLine="1545"/>
</Position7>
<Position8>
- <Filename Value="werteunit.pas"/>
- <Caret Line="44" Column="27" TopLine="9"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="1587" Column="20" TopLine="1568"/>
</Position8>
<Position9>
- <Filename Value="werteunit.pas"/>
- <Caret Line="783" Column="32" TopLine="748"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="1658" Column="70" TopLine="1638"/>
</Position9>
<Position10>
<Filename Value="epostunit.pas"/>
- <Caret Line="3114" Column="48" TopLine="3083"/>
+ <Caret Line="1689" Column="20" TopLine="1670"/>
</Position10>
<Position11>
- <Filename Value="werteunit.pas"/>
- <Caret Line="819" Column="35" TopLine="804"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="1957" Column="78" TopLine="1937"/>
</Position11>
<Position12>
<Filename Value="epostunit.pas"/>
- <Caret Line="3113" TopLine="3088"/>
+ <Caret Line="1980" Column="20" TopLine="1961"/>
</Position12>
<Position13>
- <Filename Value="werteunit.pas"/>
- <Caret Line="46" Column="50" TopLine="43"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="2104" Column="69" TopLine="2084"/>
</Position13>
<Position14>
- <Filename Value="werteunit.pas"/>
- <Caret Line="836" Column="37" TopLine="806"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="2144" Column="19" TopLine="2125"/>
</Position14>
<Position15>
- <Filename Value="epost.lpr"/>
- <Caret Line="245" Column="53" TopLine="121"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="2233" Column="67" TopLine="2213"/>
</Position15>
<Position16>
<Filename Value="epostunit.pas"/>
- <Caret Line="2560" Column="13" TopLine="1658"/>
+ <Caret Line="2251" Column="20" TopLine="2231"/>
</Position16>
<Position17>
<Filename Value="epostunit.pas"/>
- <Caret Line="2545" Column="58" TopLine="2232"/>
+ <Caret Line="2339" Column="62" TopLine="2319"/>
</Position17>
<Position18>
<Filename Value="epostunit.pas"/>
- <Caret Line="78" Column="156" TopLine="58"/>
+ <Caret Line="2356" Column="20" TopLine="2336"/>
</Position18>
<Position19>
<Filename Value="epostunit.pas"/>
+ <Caret Line="2427" Column="64" TopLine="2407"/>
</Position19>
<Position20>
<Filename Value="epostunit.pas"/>
- <Caret Line="78" Column="156" TopLine="45"/>
+ <Caret Line="2446" Column="20" TopLine="2426"/>
</Position20>
<Position21>
- <Filename Value="typenunit.pas"/>
- <Caret Line="702" Column="19" TopLine="662"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="2538" Column="70" TopLine="2518"/>
</Position21>
<Position22>
- <Filename Value="typenunit.pas"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="2594" Column="12" TopLine="2574"/>
</Position22>
<Position23>
- <Filename Value="typenunit.pas"/>
- <Caret Line="224" Column="20" TopLine="209"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="4925" Column="47" TopLine="4903"/>
</Position23>
<Position24>
- <Filename Value="typenunit.pas"/>
- <Caret Line="230" Column="67" TopLine="209"/>
+ <Filename Value="epost.lpr"/>
+ <Caret Line="13" Column="42"/>
</Position24>
<Position25>
- <Filename Value="typenunit.pas"/>
- <Caret Line="408" Column="19" TopLine="380"/>
+ <Filename Value="epost.lpr"/>
+ <Caret Line="16" Column="46"/>
</Position25>
<Position26>
- <Filename Value="typenunit.pas"/>
- <Caret Line="409" Column="52" TopLine="380"/>
+ <Filename Value="epost.lpr"/>
+ <Caret Line="59" Column="15" TopLine="39"/>
</Position26>
<Position27>
- <Filename Value="typenunit.pas"/>
- <Caret Line="422" Column="44" TopLine="390"/>
+ <Filename Value="../units/mystringlistunit.pas"/>
+ <Caret Line="373" Column="14" TopLine="337"/>
</Position27>
<Position28>
- <Filename Value="typenunit.pas"/>
- <Caret Line="918" Column="38" TopLine="885"/>
+ <Filename Value="epost.lpr"/>
+ <Caret Line="62" Column="12" TopLine="41"/>
</Position28>
<Position29>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2538" TopLine="2406"/>
+ <Filename Value="epost.lpr"/>
+ <Caret Line="69" Column="20" TopLine="48"/>
</Position29>
<Position30>
- <Filename Value="epostunit.pas"/>
- <Caret Line="130" Column="41" TopLine="117"/>
+ <Filename Value="epost.lpr"/>
+ <Caret Line="73" Column="59" TopLine="53"/>
</Position30>
</JumpHistory>
</ProjectSession>
diff --git a/epostunit.pas b/epostunit.pas
index 6b9b3a1..dd7523b 100644
--- a/epostunit.pas
+++ b/epostunit.pas
@@ -5,7 +5,7 @@ unit epostunit;
interface
uses
- Classes, SysUtils, fileunit, werteunit, typenunit, process;
+ Classes, SysUtils, mystringlistunit, werteunit, typenunit, process, lowlevelunit;
type
TBmpHeader = packed record
@@ -52,7 +52,7 @@ type
farbe: tRGB;
orte: tExtPointArray;
bezeichner: string;
- function init(st: boolean; var f: tInputfile; w: pTWerteArray; mt: longint): boolean;
+ function init(st: boolean; var f: tMyStringlist; w: pTWerteArray; mt: longint): boolean;
function liesVonDatei(st: boolean; s: string; xmi,xma,tmi,tma: extended): boolean;
function erzeugeAusWerten(st: boolean; s: string; w: pTWerteArray; mt: longint; _xmin,_xmax,_tmin,_tmax: string): boolean;
property xmin: extended read rxmin;
@@ -73,7 +73,7 @@ type
private
leseThread: tLeseThread;
function findeAlleDateien(nam: string; var dat: tGenerischeInputDateiInfoArray; Vorlage: tGenerischeInputDateiInfo): boolean;
- function ermittleExterneInputParameter(var f: tInputfile; out dateien: tGenerischeInputDateiInfoArray): boolean;
+ function ermittleExterneInputParameter(var f: tMyStringlist; out dateien: tGenerischeInputDateiInfoArray): boolean;
function ermittleInterneInputParameter(var dateien: tGenerischeInputDateiInfoArray): boolean;
procedure initVerzerrung(quelle: tWerte; xMin,xMax,tMin,tMax,x0Abs,t0Abs,mt: longint; oberst: boolean; epsilon: extended; verzerrung: tTransformationen; ZPs: tIntPointArray; ZGs: tExtPointArray; ZAs: tExtendedArray; Warn: tWarnstufe);
function rXsteps: longint;
@@ -118,22 +118,22 @@ type
procedure warteAufBeendigungDesLeseThreads;
procedure kopiereVon(st: boolean; original: tWerte); overload;
procedure kopiereVon(st: boolean; original: tWerte; xmin,xmax: longint); overload;
- function ladeDateien(st: boolean; var f: tInputfile; pl: boolean): boolean;
+ function ladeDateien(st: boolean; var f: tMyStringlist; pl: boolean): boolean;
function ladeAscii(st: boolean; datei: string): boolean;
- function berechneLiKo(st: boolean; var f: tInputfile; threads: longint): boolean;
- function berechneQuotient(st: boolean; var f: tInputfile; threads, dividend, divisor: longint): boolean;
- function berechneKorrelation(st: boolean; var f: tInputfile; threads: longint; const quelle: tWerte): boolean;
+ function berechneLiKo(st: boolean; var f: tMyStringlist; threads: longint): boolean;
+ function berechneQuotient(st: boolean; var f: tMyStringlist; threads, dividend, divisor: longint): boolean;
+ function berechneKorrelation(st: boolean; var f: tMyStringlist; threads: longint; const quelle: tWerte): boolean;
procedure ermittleMinMaxDichten(st: boolean; threads: longint; symmetrisch: boolean); overload;
procedure ermittleMinMaxDichten(st: boolean; threads,xmin,xmax,tmin,tmax: longint; symmetrisch: boolean); overload;
function fft(threads: longint; senkrecht,invers: boolean; const vor,nach: tFFTDatenordnung; const fen: tFenster; out pvFehler: extended; Warn: tWarnstufe): boolean; overload;
function fft(threads,xmin,xmax,tmin,tmax: longint; senkrecht,invers: boolean; const vor,nach: tFFTDatenordnung; const fen: tFenster; out pvFehler: extended; Warn: tWarnstufe): boolean; overload;
- function berechneZeitfrequenzanalyse(st: boolean; var f: tInputfile; threads: longint; const quelle: tWerte; Warn: tWarnstufe): boolean;
- function berechneVerzerrung(st: boolean; var f: tInputfile; threads: longint; const quelle: tWerte; Warn: tWarnstufe): boolean;
- function berechneIntegral(st: boolean; var f: tInputfile; threads: longint; const quelle: tWerte): boolean;
- function berechneFFT(st: boolean; var f: tInputfile; threads: longint; Warn: tWarnstufe): boolean;
- function berechneFFT2d(st: boolean; var f: tInputfile; threads: longint; Warn: tWarnstufe): boolean;
- function erzeugeLinearesBild(st: boolean; var f: tInputfile; maxThreads: longint): boolean;
- function erzeugeAscii(st: boolean; var f: tInputfile): boolean;
+ function berechneZeitfrequenzanalyse(st: boolean; var f: tMyStringlist; threads: longint; const quelle: tWerte; Warn: tWarnstufe): boolean;
+ function berechneVerzerrung(st: boolean; var f: tMyStringlist; threads: longint; const quelle: tWerte; Warn: tWarnstufe): boolean;
+ function berechneIntegral(st: boolean; var f: tMyStringlist; threads: longint; const quelle: tWerte): boolean;
+ function berechneFFT(st: boolean; var f: tMyStringlist; threads: longint; Warn: tWarnstufe): boolean;
+ function berechneFFT2d(st: boolean; var f: tMyStringlist; threads: longint; Warn: tWarnstufe): boolean;
+ function erzeugeLinearesBild(st: boolean; var f: tMyStringlist; maxThreads: longint): boolean;
+ function erzeugeAscii(st: boolean; var f: tMyStringlist): boolean;
function erzeugeLineout(st: boolean; params: string): boolean;
function erzeugeBinning(st: boolean; params: string): boolean;
procedure spiegle(threads: longint); overload;
@@ -319,11 +319,11 @@ type
procedure stExecute; override;
end;
-function neuePalette(var f: tInputfile): boolean;
+function neuePalette(var f: tMyStringlist): boolean;
function initBmpHeader(w,h: longint): tBmpHeader;
procedure schreibeBmpHeader(var f: file; w,h: longint);
function findePalette(out Palette: pTPalette; name: string): boolean;
-function erzeugeLegende(st: boolean; var f: tInputfile; datei: string; Qu: tWerte; minDichte,maxDichte: extended; nb: tTransformationen; pal: pTPalette): boolean;
+function erzeugeLegende(st: boolean; var f: tMyStringlist; datei: string; Qu: tWerte; minDichte,maxDichte: extended; nb: tTransformationen; pal: pTPalette): boolean;
function strToFftDo(out fftDo: tFFTDatenordnung; s: string): boolean;
function findeWerte(s: String; pws: pTWerteArray; Kont: pTKonturenArray; darfErstellen: boolean): integer;
function findeKontur(s: String; pks: pTKonturenArray; darfErstellen: boolean): integer;
@@ -639,7 +639,7 @@ begin
end;
end;
-function tWerte.ermittleExterneInputParameter(var f: tInputfile; out dateien: tGenerischeInputDateiInfoArray): boolean;
+function tWerte.ermittleExterneInputParameter(var f: tMyStringlist; out dateien: tGenerischeInputDateiInfoArray): boolean;
// Parameter ermitteln, die in der Config-Datei stehen
var s: string;
ne,be,maxAmp: extended;
@@ -675,7 +675,7 @@ begin
sWerte.params.transformationen.xstop:=0;
mitGewalt:=false;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende!',3);
aufraeumen;
exit;
@@ -1262,7 +1262,7 @@ begin
end{of case};
end;
-function tWerte.ladeDateien(st: boolean; var f: tInputfile; pl: boolean): boolean;
+function tWerte.ladeDateien(st: boolean; var f: tMyStringlist; pl: boolean): boolean;
var inputs: tGenerischeInputDateiInfoArray;
procedure aufraeumen;
@@ -1437,11 +1437,11 @@ begin
Transformationen.clear;
Transformationen.xsteps:=_xsteps;
Transformationen.tsiz:=_tsiz;
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig '+timetostr(now-Zeit),3);
result:=true;
end;
-function tWerte.berechneLiKo(st: boolean; var f: tInputfile; threads: longint): boolean;
+function tWerte.berechneLiKo(st: boolean; var f: tMyStringlist; threads: longint): boolean;
var i,xmin,xmax,tmin,tmax: longint;
liKo: tLiKo;
s: string;
@@ -1457,7 +1457,7 @@ begin
_tsiz:=0;
Zeit:=now;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende!',3);
exit;
end;
@@ -1558,11 +1558,11 @@ begin
until fertig;
for i:=0 to length(liKoThreads)-1 do
liKoThreads[i].free;
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig '+timetostr(now-Zeit),3);
result:=true;
end;
-function tWerte.berechneQuotient(st: boolean; var f: tInputfile; threads, dividend, divisor: longint): boolean;
+function tWerte.berechneQuotient(st: boolean; var f: tMyStringlist; threads, dividend, divisor: longint): boolean;
var i,xmin,xmax,tmin,tmax: longint;
s: string;
fertig: boolean;
@@ -1584,7 +1584,7 @@ begin
epsilon:=1e-9;
Zeit:=now;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende!',3);
exit;
end;
@@ -1651,11 +1651,11 @@ begin
until fertig;
for i:=0 to length(quotientThreads)-1 do
quotientThreads[i].free;
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig '+timetostr(now-Zeit),3);
result:=true;
end;
-function tWerte.berechneKorrelation(st: boolean; var f: tInputfile; threads: longint; const quelle: tWerte): boolean;
+function tWerte.berechneKorrelation(st: boolean; var f: tMyStringlist; threads: longint; const quelle: tWerte): boolean;
var i,xmin,xmax,tmin,tmax: longint;
s: string;
wavelet: tWavelet;
@@ -1686,7 +1686,7 @@ begin
_beta:=quelle._beta;
ausrichtung:=0;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende!',3);
exit;
end;
@@ -1789,7 +1789,7 @@ begin
eWerte.kopiereVon(st,pEx,xmin,xmax,tmin,tmax);
end;
end{of case};
- gibAus('... fertig '+ZeitDarstellen(now-Zeit)+', berechne ...',3);
+ gibAus('... fertig '+timetostr(now-Zeit)+', berechne ...',3);
end
else begin
genauigkeit:=gExtended;
@@ -1819,7 +1819,7 @@ begin
end;
gibAus(' (Parseval-Fehler = '+floattostr(pvFehler/length(korrelThreads))+')',3);
wavelet.free;
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig '+timetostr(now-Zeit),3);
result:=true;
end;
@@ -1862,11 +1862,11 @@ begin
_minW:=min(_minW,DTs[i].minDichte);
DTs[i].free;
end;
- gibAus('... sie sind '+myfloattostr(_minW)+' und '+myfloattostr(_maxW)+'. '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... sie sind '+myfloattostr(_minW)+' und '+myfloattostr(_maxW)+'. '+timetostr(now-Zeit),3);
if symmetrisch then begin
_minW:=min(_minW,-_maxW);
_maxW:=max(_maxW,-_minW);
- gibAus('Jetzt sind sie '+myfloattostr(_minW)+' und '+myfloattostr(_maxW)+'. '+ZeitDarstellen(now-Zeit),3);
+ gibAus('Jetzt sind sie '+myfloattostr(_minW)+' und '+myfloattostr(_maxW)+'. '+timetostr(now-Zeit),3);
end;
end;
@@ -1954,7 +1954,7 @@ begin
gibAus('Alle FFTThreads fertig!',1);
end;
-function tWerte.berechneZeitfrequenzanalyse(st: boolean; var f: tInputfile; threads: longint; const quelle: tWerte; Warn: tWarnstufe): boolean;
+function tWerte.berechneZeitfrequenzanalyse(st: boolean; var f: tMyStringlist; threads: longint; const quelle: tWerte; Warn: tWarnstufe): boolean;
var i,j,tmin,tmax,tOf,Schritt: longint;
Zeit,pvFehler,freqMax: extended;
Fenster: tFenster;
@@ -1977,7 +1977,7 @@ begin
freqMax:=quelle._tsiz/(quelle.Transformationen.tstop-quelle.Transformationen.tstart);
Genauigkeit:=gExtended;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende!',3);
exit;
end;
@@ -2097,11 +2097,11 @@ begin
Transformationen.addAusschnitt(0,_xsteps-1,0,_tsiz-1);
if not st then
eWerte.holeRAM(0);
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig '+timetostr(now-Zeit),3);
result:=true;
end;
-function tWerte.berechneVerzerrung(st: boolean; var f: tInputfile; threads: longint; const quelle: tWerte; Warn: tWarnstufe): boolean;
+function tWerte.berechneVerzerrung(st: boolean; var f: tMyStringlist; threads: longint; const quelle: tWerte; Warn: tWarnstufe): boolean;
var i,j: longint;
grenzen: t2x2Longint;
ZPs: tIntPointArray; // Zielpositionen
@@ -2141,7 +2141,7 @@ begin
Vorbearbeitung:=tTransformationen.create;
Nachbearbeitung:=tTransformationen.create;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende!',3);
aufraeumen;
exit;
@@ -2226,11 +2226,11 @@ begin
until fertig;
end;
aufraeumen;
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig '+timetostr(now-Zeit),3);
result:=true;
end;
-function tWerte.berechneIntegral(st: boolean; var f: tInputfile; threads: longint; const quelle: tWerte): boolean;
+function tWerte.berechneIntegral(st: boolean; var f: tMyStringlist; threads: longint; const quelle: tWerte): boolean;
var i,tmin,tmax,xmin,xmax: longint;
Zeit: extended;
s: string;
@@ -2248,7 +2248,7 @@ begin
Genauigkeit:=gExtended;
rtg:=irHorizontal;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende!',3);
exit;
end;
@@ -2331,12 +2331,12 @@ begin
for i:=0 to length(intThreads)-1 do
intThreads[i].free;
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig '+timetostr(now-Zeit),3);
end;
result:=true;
end;
-function tWerte.berechneFFT(st: boolean; var f: tInputfile; threads: longint; Warn: tWarnstufe): boolean;
+function tWerte.berechneFFT(st: boolean; var f: tMyStringlist; threads: longint; Warn: tWarnstufe): boolean;
var i: longint;
Zeit,pvFehler: extended;
NB: tFFTDatenordnung;
@@ -2353,7 +2353,7 @@ begin
Fenster.aktiv:=false;
senkrecht:=true;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende!',3);
end;
if s='Ende' then break;
@@ -2419,12 +2419,12 @@ begin
Transformationen.addFFT(not senkrecht,senkrecht);
if not st then begin
eWerte.holeRam(0);
- gibAus('... fertig! '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig! '+timetostr(now-Zeit),3);
end;
result:=true;
end;
-function tWerte.berechneFFT2d(st: boolean; var f: tInputfile; threads: longint; Warn: tWarnstufe): boolean;
+function tWerte.berechneFFT2d(st: boolean; var f: tMyStringlist; threads: longint; Warn: tWarnstufe): boolean;
var i,k: longint;
Zeit,pvFehler: extended;
NB,preOrd: tFFTDatenordnung;
@@ -2443,7 +2443,7 @@ begin
end;
spiegeln:=false;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende!',3);
end;
if s='FFTEnde' then break;
@@ -2502,11 +2502,11 @@ begin
eWerte.holeRam(0);
end;
Transformationen.addFFT(true,true);
- gibAus('... fertig! '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig! '+timetostr(now-Zeit),3);
if spiegeln then begin
gibAus('Werte spiegeln ...',3);
spiegle(threads);
- gibAus('... fertig! '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig! '+timetostr(now-Zeit),3);
end;
gibAus('berechne t-FFT ...',3);
if not fft(threads,0,_xsteps-1,0,_tsiz-1,true,false,doRes,preOrd,Fensters[true],pvFehler,Warn) then begin
@@ -2514,14 +2514,14 @@ begin
exit;
end;
gibAus(' (Parseval-Fehler = '+floattostr(pvFehler)+')',3);
- gibAus('... fertig! '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig! '+timetostr(now-Zeit),3);
gibAus('berechne x-FFT ...',3);
if not fft(threads,0,_xsteps-1,0,_tsiz-1,false,false,doRes,preOrd,Fensters[false],pvFehler,Warn) then begin
gibAus('Es traten Fehler auf!',3);
exit;
end;
gibAus(' (Parseval-Fehler = '+floattostr(pvFehler)+')',3);
- gibAus('... fertig! '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig! '+timetostr(now-Zeit),3);
gibAus('Wertenachbearbeiten ...',3);
case genauigkeit of
gSingle: sWerte.fft2dNachbearbeitungA(NB);
@@ -2531,11 +2531,11 @@ begin
doBetr,doBetrQdr:
fft2dNachbearbeitung(threads,nb); // die Hauptarbeit
end{of case};
- gibAus('... fertig! '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig! '+timetostr(now-Zeit),3);
result:=true;
end;
-function tWerte.erzeugeLinearesBild(st: boolean; var f: tInputfile; maxThreads: longint): boolean;
+function tWerte.erzeugeLinearesBild(st: boolean; var f: tMyStringlist; maxThreads: longint): boolean;
var s,datei: string;
i,j,k,schriftgroesze: longint;
xzoom,yzoom,wert,schritt,miw,maw,Zeit: extended;
@@ -2591,7 +2591,7 @@ begin
Rahmen:=false;
fontRenderer:=nil;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende in '''+paramstr(1)+'''!',3);
aufraeumen;
exit;
@@ -2845,10 +2845,10 @@ begin
aufraeumen;
result:=true;
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig '+timetostr(now-Zeit),3);
end;
-function tWerte.erzeugeAscii(st: boolean; var f: tInputfile): boolean;
+function tWerte.erzeugeAscii(st: boolean; var f: tMyStringlist): boolean;
var datei,s,separator: string;
outf: textfile;
i,j: longint;
@@ -2868,7 +2868,7 @@ begin
mitKoordinaten:=0;
separator:=',';
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende in '''+paramstr(1)+'''!',3);
exit;
end;
@@ -2967,7 +2967,7 @@ begin
end{of Case};
end{of Case};
close(outf);
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig '+timetostr(now-Zeit),3);
result:=true;
end;
@@ -3070,7 +3070,7 @@ begin
end;
closefile(f);
end;
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig '+timetostr(now-Zeit),3);
result:=true;
end;
@@ -3108,7 +3108,7 @@ begin
gExtended:
eWerte.erzeugeBinning(senkrecht,linien,x0,dx,params);
end{of case};
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),3);
+ gibAus('... fertig '+timetostr(now-Zeit),3);
result:=true;
end;
@@ -3935,7 +3935,7 @@ begin
result:=max(result,orte[i]['y']);
end;
-function tKontur.init(st: boolean; var f: tInputfile; w: pTWerteArray; mt: longint): boolean;
+function tKontur.init(st: boolean; var f: tMyStringlist; w: pTWerteArray; mt: longint): boolean;
var s,xmi,xma,tmi,tma: string;
i,j,k,tmpi: longint;
begin
@@ -3946,7 +3946,7 @@ begin
tmi:='-1e9';
tma:='1e9';
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende in '''+paramstr(1)+'''!',3);
exit;
end;
@@ -4545,7 +4545,7 @@ begin
result:=false;
end;
-function erzeugeLegende(st: boolean; var f: tInputfile; datei: string; Qu: tWerte; minDichte,maxDichte: extended; nb: tTransformationen; pal: pTPalette): boolean;
+function erzeugeLegende(st: boolean; var f: tMyStringlist; datei: string; Qu: tWerte; minDichte,maxDichte: extended; nb: tTransformationen; pal: pTPalette): boolean;
var s: string;
breite,hoehe,i,j,k,lo,ro,oo,uo,
schriftgroesze: longint;
@@ -4576,7 +4576,7 @@ begin
beschriftungsschritte[1].faktor:=1;
rahmen:=false;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende in '''+paramstr(1)+'''!',3);
exit;
end;
@@ -4617,7 +4617,7 @@ begin
beschriftungsschritte[0].linear:=false;
beschriftungsschritte[0].faktor:=1;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende in '''+paramstr(1)+'''!',3);
exit;
end;
@@ -4922,7 +4922,7 @@ begin
blockwrite(f,bmpHeader,sizeof(bmpHeader));
end;
-function neuePalette(var f: tInputfile): boolean;
+function neuePalette(var f: tMyStringlist): boolean;
var s,name: string;
Palette: tRGBArray;
i,tmpi: longint;
@@ -4933,7 +4933,7 @@ begin
name:='';
nPalette:=nil;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende in '''+paramstr(1)+'''!',3);
exit;
end;
diff --git a/fileunit.pas b/fileunit.pas
deleted file mode 100644
index 838556c..0000000
--- a/fileunit.pas
+++ /dev/null
@@ -1,238 +0,0 @@
-unit fileunit;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
- Classes, SysUtils, Math;
-
-type
- tInputfile = class
- private
- zeile: longint;
- zeilen: tStringlist;
- public
- procedure anAnfang;
- function gibZeile(out s: string): boolean;
- function einlesen(fnam: string): boolean;
- function brauchenoch(bez: string): boolean;
- constructor create;
- destructor destroy; override;
- end;
-
-implementation
-
-uses typenunit;
-
-procedure tInputfile.anAnfang;
-begin
- zeile:=0;
-end;
-
-function tInputfile.gibZeile(out s: string): boolean;
-begin
- result:=false;
- if (zeile<0) or (zeile>=zeilen.count) then exit;
- s:=zeilen[zeile];
- result:=true;
- inc(zeile);
-end;
-
-function tInputfile.einlesen(fnam: string): boolean;
-var f: textfile;
- i,j,k,l,Ebene: longint;
- s,t,u,v: string;
- SchleifenInhalt: tStringlist;
- istWahr,gefunden: boolean;
-const binops: array[0..8] of string =
- ('<=','>=','<>','≤','≥','=','≠','<','>');
-begin
- result:=false;
- assignfile(f,fnam);
- reset(f);
- zeilen.clear;
- while not eof(f) do begin
- readln(f,s);
- zeilen.add(s);
- end;
- closefile(f);
- zeile:=0;
-
- i:=0;
- while i<zeilen.count do begin
- s:=zeilen[i];
- s:=erstesArgument(s,'#');
- if length(s)=0 then begin
- zeilen.delete(i);
- continue;
- end;
- zeilen[i]:=s;
- inc(i);
- end;
-
- i:=0;
- while i<zeilen.count do begin
- s:=zeilen[i];
- if startetMit('!überspringe:',s) then begin
- for j:=0 to strtoint(s) do
- zeilen.delete(i);
- continue;
- end;
-
- zeilen[i]:=s;
- if s='Dateiende' then begin
- inc(i);
- while i<zeilen.count do
- zeilen.delete(i);
- continue;
- end;
- inc(i);
- end;
-
- i:=0;
- while i<zeilen.count do begin
- s:=zeilen[i];
- if startetMit('!Schleife:',s) then begin
- l:=i;
- zeilen.delete(i);
- t:=erstesArgument(s,':');
- if (length(t)=0) or (t[1]<>'$') then exit;
-
- SchleifenInhalt:=TStringlist.create;
- Ebene:=0;
- while (i<zeilen.Count) and ((Ebene<>0) or (zeilen[i]<>'!Schleifenende')) do begin
- SchleifenInhalt.Add(zeilen[i]);
- if zeilen[i]='!Schleifenende' then dec(Ebene);
- if pos('!Schleife:',zeilen[i])=1 then inc(Ebene);
- zeilen.delete(i);
- end;
- zeilen.delete(i);
-
- while length(s)>0 do begin
- u:=erstesArgument(s);
- for j:=0 to SchleifenInhalt.Count-1 do begin
- v:=SchleifenInhalt[j];
- k:=length(v);
- while (pos(t,v)>0) and (k>0) do begin
- v:=copy(v,1,pos(t,v)-1)+u+copy(v,pos(t,v)+length(t),length(v));
- dec(k);
- end;
- zeilen.insert(i,v);
- inc(i);
- end;
- end;
-
- SchleifenInhalt.Free;
- i:=l;
- continue;
- end;
- zeilen[i]:=s;
- inc(i);
- end;
-
- i:=0;
- while i<zeilen.count do begin
- s:=zeilen[i];
- if startetMit('?',s) then begin
- t:=erstesArgument(s,':');
- gefunden:=false;
- for j:=0 to length(binops)-1 do
- if pos(binops[j],t)>0 then begin
- gefunden:=true;
- u:=trim(copy(t,1,pos(binops[j],t)-1));
- delete(t,1,pos(binops[j],t)+length(binops[j])-1);
- t:=trim(t);
- case binops[j] of
- '≤','<=': istWahr:=strtofloat(u)<=strtofloat(t);
- '≥','>=': istWahr:=strtofloat(u)>=strtofloat(t);
- '=':
- try
- istWahr:=strtofloat(u)=strtofloat(t);
- except
- istWahr:=u=t;
- end;
- '≠','<>':
- try
- istWahr:=strtofloat(u)<>strtofloat(t);
- except
- istWahr:=u<>t;
- end;
- '<': istWahr:=strtofloat(u)<strtofloat(t);
- '>': istWahr:=strtofloat(u)>strtofloat(t);
- else begin
- gibAus('Operator '''+binops[j]+''' ist nicht implementiert!',3);
- exit;
- end;
- end{of case};
- if not istWahr then
- zeilen.delete(i);
- break;
- end;
- if not gefunden then begin
- gibAus('Ich kann keinen gültigen Operator in Bedingung '''+t+''' finden!',3);
- exit;
- end;
- if not istWahr then
- continue;
- zeilen[i]:=s;
- end;
- inc(i);
- end;
-
- i:=0;
- while i<zeilen.count do begin
- s:=zeilen[i];
- if startetMit('!überspringe:',s) then begin
- for j:=0 to strtoint(s) do
- zeilen.delete(i);
- continue;
- end;
-
- zeilen[i]:=s;
- if s='Dateiende' then begin
- inc(i);
- while i<zeilen.count do
- zeilen.delete(i);
- continue;
- end;
- inc(i);
- end;
-
- result:=true;
-end;
-
-function tInputfile.brauchenoch(bez: string): boolean;
-var i: longint;
- s,t: string;
-begin
- result:=false;
- for i:=max(0,zeile-1) to zeilen.count-1 do begin
- s:=' '+zeilen[i]+' ';
- while pos(bez,s)>0 do begin
- t:=copy(s,1,pos(bez,s)+length(bez));
- delete(s,1,pos(bez,s)+length(bez)-1);
- delete(t,1,length(t)-length(bez)-2);
- if (t[1] in [' ',#9,':','[']) and (t[length(t)] in [' ',#9,':',']']) and (copy(t,2,length(bez))=bez) then begin
- result:=true;
- exit;
- end;
- end;
- end;
-end;
-
-constructor tInputfile.create;
-begin
- inherited create;
- zeilen:=tStringlist.create;
- zeile:=0;
-end;
-
-destructor tInputfile.destroy;
-begin
- zeilen.free;
- inherited destroy;
-end;
-
-end.
-
diff --git a/typenunit.pas b/typenunit.pas
index 54bfca2..20754c0 100644
--- a/typenunit.pas
+++ b/typenunit.pas
@@ -5,7 +5,7 @@ unit typenunit;
interface
uses
- sysutils, agg_2D, FPimage, agg_basics, classes, Math, fileUnit;
+ sysutils, agg_2D, FPimage, agg_basics, classes, Math, mystringlistunit, lowlevelunit;
const Speicherhappen = 32768; // Anzahl an mit einem Mal zu reservierender Arrayzellen
myInf = 1e12;
@@ -16,32 +16,6 @@ type
tExtraInfos = class;
tCallBackGetValue = function(name: string): extended of object;
tExprToFloat = function(syntaxtest: boolean; name: string): extended of object;
- generic tArray<T> = array of T;
- tLongintArray = specialize tArray<longint>;
- pTLongintArray = ^tLongintArray;
- tSingleArray = specialize tArray<single>;
- pTSingleArray = ^tSingleArray;
- tIntPoint = array['x'..'y'] of longint;
- tExtPoint = array['x'..'y'] of extended;
- t2x2Longint = array['x'..'y','x'..'y'] of longint;
- t2x2Extended = array['x'..'y','x'..'y'] of extended;
- tExtPointArray = specialize tArray<tExtPoint>;
- pTExtPointArray = ^tExtPointArray;
- tExtendedArray = specialize tArray<extended>;
- pTExtendedArray = ^tExtendedArray;
- tInt32Array = specialize tArray<int32>;
- tByteArray = specialize tArray<byte>;
- tStringArray = specialize tArray<string>;
- tIntPointArray = specialize tArray<tIntPoint>;
- tRGB = record
- rgbBlue : byte;
- rgbGreen: byte;
- rgbRed : byte;
- end;
- tRgbArray = array of tRGB;
- tKodierung = (kUnbekannt,k32BitSignedInteger);
- tWarnstufe = (wsStreng,wsLasch);
- tGenauigkeit = (gSingle,gExtended);
tIntegrationsRichtung = (irHorizontal,irEinfall,irAusfall);
tGenerischeInputDateiInfo = class // nur zum Vererben gedacht, nie selbst instanziieren!
Name,Fehlerbehebungskommando: string;
@@ -416,7 +390,7 @@ type
procedure addFFT(hor,ver: boolean);
procedure AddSpiegelung;
function add(inh: tTransformation): boolean; overload;
- function add(st: boolean; s: string; f: tInputFile; etf: tExprToFloat): boolean; overload;
+ function add(st: boolean; s: string; f: tMyStringlist; etf: tExprToFloat): boolean; overload;
function add(syntaxtest: boolean; s: string; xscale,yscale: extended; etf: tExprToFloat): boolean; overload;
procedure addAusschnitt(xmin,xmax,tmin,tmax: longint);
function append(inhs: tTransformationen): boolean;
@@ -428,33 +402,6 @@ type
procedure berechneZielausdehnung(out grenzen: t2x2Longint);
end;
-function ZeitDarstellen(t: extended): string;
-function myfloattostr(f: extended): string;
-function floattostrtrunc(f: extended; dig: longint; laessig: boolean): string;
-function binOpPos(op: char; s: string): integer;
-function fktPos(fkt,s: string): integer;
-procedure gibAus(s: string; ausgaben: byte);
-function strToGen(out gen: tGenauigkeit; s: string): boolean;
-function orFarben(a,b: tRGB): tRGB;
-function andFarben(a,b: tRGB): tRGB;
-function wertZuFarbe(x: extended; p: tRGBArray): tRGB;
-function tFPColor2tRgb(c: tFPColor): tRGB;
-function tRgb2tFPColor(c: tRGB): tFPColor;
-procedure myDebugLnThreadLog(s: string);
-function belegterSpeicher: longint;
-procedure cleanupLogs;
-procedure cleanupLog(tid: PtrUInt);
-procedure dumpExceptionCallStack(E: Exception);
-function startetMit(start: string; var s: string): boolean;
-function endetMit(ende: string; var s: string): boolean;
-function trimAll(s: string): string;
-function erstesArgument(var s: string): string; overload;
-function erstesArgument(var s: string; Trenner: string): string; overload;
-function mydatetimetostr(t: tDateTime): string;
-function tExtPointToStr(p: tExtPoint): string;
-function tIntPointToStr(p: tIntPoint): string;
-procedure fehler(s: string);
-
implementation
// tGenerischeInputDateiInfo ***************************************************
@@ -1847,7 +1794,7 @@ begin
result:=true;
end;
-function tTransformationen.add(st: boolean; s: string; f: tInputFile; etf: tExprToFloat): boolean;
+function tTransformationen.add(st: boolean; s: string; f: tMyStringlist; etf: tExprToFloat): boolean;
var i: longint;
begin
result:=false;
@@ -1859,7 +1806,7 @@ begin
parameter[0]:=0;
parameter[1]:=0;
repeat
- if not f.gibZeile(s) then begin
+ if not f.readln(s) then begin
gibAus('Unerwartetes Dateiende!',3);
exit;
end;
@@ -2012,284 +1959,5 @@ begin
end;
end;
-// allgemeine Funktionen *******************************************************
-
-function floattostrtrunc(f: extended; dig: longint; laessig: boolean): string;
-begin
- result:=inttostr(round(f*power(10,dig)));
- result:=copy(result,1,length(result)-dig)+'.'+copy(result,length(result)-dig+1,dig);
- if laessig then
- while result[length(result)]='0' do
- delete(result,length(result),1);
- if result[length(result)]='.' then
- delete(result,length(result),1);
-end;
-
-function myfloattostr(f: extended): string;
-begin
- result:=floattostr(f);
- if pos('E',result)>0 then
- result:=copy(result,1,pos('E',result)-1)+' x 10^'+copy(result,pos('E',result)+1,length(result));
-end;
-
-function ZeitDarstellen(t: extended): string;
-var schreibe: boolean;
-begin
- result:='(';
- schreibe:=t>=1;
- if schreibe then begin
- result:=result+inttostr(floor(t))+' Tage ';
- t:=t-floor(t);
- end;
- t:=t*24;
- schreibe:=schreibe or (t>=1);
- if schreibe then begin
- result:=inttostr(floor(t))+':';
- t:=t-floor(t);
- end;
- t:=t*60;
- schreibe:=schreibe or (t>=1);
- if schreibe then begin
- result:=inttostr(floor(t))+':';
- t:=t-floor(t);
- end;
- t:=t*60;
- result:=result+inttostr(round(t))+' s)';
-end;
-
-function binOpPos(op: char; s: string): integer;
-begin
- result:=0;
- repeat
- result:=result+max(1,pos(op,copy(s,result+1,length(s)-result)));
- until ((result>1) and not (s[result-1] in ['+','-','*','/','(','E','e'])) or (result>length(s)) or (s[result]<>op);
- if (result>length(s)) or (s[result]<>op) then result:=0;
-end;
-
-function fktPos(fkt,s: string): integer;
-var tmp: longint;
-begin
- result:=pos(fkt,s);
- while (result<>0) and ((result+length(fkt)>length(s)) or not (s[result+length(fkt)] in [' ','('])) do begin
- tmp:=pos(fkt,copy(s,result+1,length(s)));
- if tmp=0 then result:=0
- else result:=result + tmp;
- end;
-end;
-
-procedure gibAus(s: string; ausgaben: byte);
-begin
- if odd(ausgaben) then myDebugLnThreadLog(s);
- if odd(ausgaben div 2) then writeln(s);
-end;
-
-function strToGen(out gen: tGenauigkeit; s: string): boolean;
-begin
- result:=true;
- if (s='float') or (s='single') then
- begin
- gen:=gSingle;
- exit;
- end;
- if s='extended' then
- begin
- gen:=gExtended;
- exit;
- end;
- gibAus('Kenne Genauigkeitstyp '''+s+''' nicht!',3);
- result:=false;
-end;
-
-function mischeFarben(a,b: tRGB; x: extended): tRGB;
-begin
- result.rgbRed:=min(255,max(0,round(a.rgbRed*(1-x)+b.rgbRed*x)));
- result.rgbGreen:=min(255,max(0,round(a.rgbGreen*(1-x)+b.rgbGreen*x)));
- result.rgbBlue:=min(255,max(0,round(a.rgbBlue*(1-x)+b.rgbBlue*x)));
-end;
-
-function orFarben(a,b: tRGB): tRGB;
-begin
- result.rgbRed:=a.rgbRed or b.rgbRed;
- result.rgbGreen:=a.rgbGreen or b.rgbGreen;
- result.rgbBlue:=a.rgbBlue or b.rgbBlue;
-end;
-
-function andFarben(a,b: tRGB): tRGB;
-begin
- result.rgbRed:=a.rgbRed and b.rgbRed;
- result.rgbGreen:=a.rgbGreen and b.rgbGreen;
- result.rgbBlue:=a.rgbBlue and b.rgbBlue;
-end;
-
-function wertZuFarbe(x: extended; p: tRGBArray): tRGB;
-var i: longint;
-begin
- x:=min(1,max(0,x))*(length(p)-1);
- i:=floor(x);
- if i>=(length(p)-1) then begin
- result.rgbRed:=p[length(p)-1].rgbRed;
- result.rgbGreen:=p[length(p)-1].rgbGreen;
- result.rgbBlue:=p[length(p)-1].rgbBlue;
- exit;
- end;
- if i<0 then begin
- result.rgbRed:=p[0].rgbRed;
- result.rgbGreen:=p[0].rgbGreen;
- result.rgbBlue:=p[0].rgbBlue;
- exit;
- end;
- x:=x-i;
- result:=mischeFarben(p[i],p[i+1],x);
-end;
-
-function tFPColor2tRgb(c: tFPColor): tRGB;
-begin
- result.rgbRed:=c.red;
- result.rgbGreen:=c.green;
- result.rgbBlue:=c.blue;
-end;
-
-function tRgb2tFPColor(c: tRGB): tFPColor;
-begin
- result.red:=c.rgbRed;
- result.green:=c.rgbGreen;
- result.blue:=c.rgbBlue;
-end;
-
-procedure myDebugLnThreadLog(s: string);
-var f: textfile;
- id: PtrUInt;
-begin
- id:=getThreadID;
- assignfile(f,'Log'+inttostr(id));
- if fileexists('Log'+inttostr(id)) then append(f)
- else rewrite(f);
- writeln(f,inttostr(id)+': '+s);
- closefile(f);
-end;
-
-function belegterSpeicher: longint;
-var f: textFile;
- s: string;
-begin
- s:='/proc/'+inttostr(getProcessId)+'/smaps';
- result:=0;
- if not fileexists(s) then exit;
- assignfile(f,s);
- reset(f);
- while not eof(f) do begin
- readln(f,s);
- if (leftStr(s,4)='Rss:') and (rightStr(s,3)=' kB') then begin
- delete(s,1,4);
- delete(s,length(s)-2,3);
- s:=trim(s);
- result:=result+strtoint(s);
- end;
- end;
- closefile(f);
-end;
-
-procedure cleanupLogs;
-var sr: tSearchRec;
- err: longint;
-begin
- err:=findfirst('Log*',$3f,sr);
- while err=0 do begin
- deletefile(sr.name);
- err:=findnext(sr);
- end;
- findclose(sr);
-end;
-
-procedure cleanupLog(tid: PtrUInt);
-var s: string;
- Zeit: extended;
-begin
- s:='Log'+inttostr(tid);
- Zeit:=now+1/24/60/60;
- while (not fileexists(s)) and (Zeit>now) do
- sleep(100);
- if fileexists(s) then
- deletefile(s)
- else begin
- gibAus('Datei '''+s+''' kann nicht gelöscht werden, da sie nicht existiert!',3);
- raise exception.create('Datei '''+s+''' kann nicht gelöscht werden, da sie nicht existiert!');
- end;
-end;
-
-procedure dumpExceptionCallStack(E: Exception);
-var
- I: Integer;
- Frames: PPointer;
- Report: string;
-begin
- Report := 'Program exception! ' + LineEnding +
- 'Stacktrace:' + LineEnding + LineEnding;
- if E <> nil then begin
- Report := Report + 'Exception class: ' + E.ClassName + LineEnding +
- 'Message: ' + E.Message + LineEnding;
- end;
- Report := Report + BackTraceStrFunc(ExceptAddr);
- Frames := ExceptFrames;
- for I := 0 to ExceptFrameCount - 1 do
- Report := Report + LineEnding + BackTraceStrFunc(Frames[I]);
- gibAus(Report,3);
-end;
-
-function startetMit(start: string; var s: string): boolean;
-begin
- result:=leftStr(s,length(start))=start;
- if result then
- s:=trim(rightStr(s,length(s)-length(start)));
-end;
-
-function endetMit(ende: string; var s: string): boolean;
-begin
- result:=rightStr(s,length(ende))=ende;
- if result then
- s:=trim(leftStr(s,length(s)-length(ende)));
-end;
-
-function trimAll(s: string): string;
-begin
- result:=s;
- while pos(' ',result)>0 do
- delete(result,pos(' ',result),1);
-end;
-
-function erstesArgument(var s: string): string;
-begin
- result:=erstesArgument(s,' ');
-end;
-
-function erstesArgument(var s: string; Trenner: string): string;
-begin
- result:=copy(s,1,pos(Trenner,s+Trenner)-1);
- delete(s,1,length(result)+length(Trenner));
- s:=trim(s);
- result:=trim(result);
-end;
-
-function mydatetimetostr(t: tDateTime): string;
-begin
- result:=formatDateTime('YYYY.MM.DD_hh.mm.ss',t);
-end;
-
-function tExtPointToStr(p: tExtPoint): string;
-begin
- result:=floattostr(p['x'])+';'+floattostr(p['y']);
-end;
-
-function tIntPointToStr(p: tIntPoint): string;
-begin
- result:=inttostr(p['x'])+';'+inttostr(p['y']);
-end;
-
-procedure fehler(s: string);
-begin
- gibAus(s,1);
- raise exception.create(s);
-end;
-
end.
diff --git a/werteunit.pas b/werteunit.pas
index efbcd0d..6c81bff 100644
--- a/werteunit.pas
+++ b/werteunit.pas
@@ -5,7 +5,7 @@ unit werteunit;
interface
uses
- Classes, SysUtils, typenunit, math, process;
+ Classes, SysUtils, typenunit, math, process, lowlevelunit;
type
// tLLWerte ********************************************************************
@@ -438,7 +438,7 @@ begin
exit;
end;
end;
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),1);
+ gibAus('... fertig '+timetostr(now-Zeit),1);
result:=true;
end;
@@ -1099,7 +1099,7 @@ begin
end;
gibAus('Fordere '+inttostr(floor(ho*br*sizeof(wgen)/1024/1024))+' MB RAM an ('+inttostr(br)+' x-Schritte mal '+inttostr(ho)+' t-Schritte; bisher '+inttostr(belegterSpeicher div 1024)+' MB belegt). ...',ausgaben);
setlength(werte,br*ho);
- gibAus('... fertig '+ZeitDarstellen(now-Zeit),ausgaben);
+ gibAus('... fertig '+timetostr(now-Zeit),ausgaben);
end;
function tLLWerte.zuPixelWerten(whoehe,wbreite,xpmi,xmi,tmi: longint; xz,yz: extended; pPWerte: pTExtendedArray; pPAnzahlen: pTLongintArray): boolean;