Hallo,
ich verzweifle gerade an der Bereichsprüfung. Es kommt immer die Fehlermeldung "Fehler bei Bereichsprüfung". Bei folgendem Programmausschnitt haben
ScanDPI den Wert
200 und
Tolerance dern Wert
0:
Delphi-Quellcode:
Var
Hoehe,HMin,HMax : Integer;
...
// Idealmaß ermitteln
Hoehe:=Round(ScanDPI * 11.7);
Breite:=Round(ScanDPI * 8.3);
// Toleranzfaktoren ermitteln
Case Tolerance Of
0 : Begin // bis 70 % größer oder kleiner werden tolleriert
HMin:=Round(0.7*Hoehe); HMax:=Round(1.3*Hoehe);
BMin:=Round(0.7*Breite); BMax:=round(1.3*Breite);
End;
1 : Begin // bis 80 % ...
HMin:=Round(0.8*Hoehe); HMax:=Round(1.2*Hoehe);
BMin:=Round(0.8*Breite); BMax:=round(1.2*Breite);
End;
2 : Begin // bis 90 % ...
HMin:=Round(0.9*Hoehe); HMax:=Round(1.1*Hoehe);
BMin:=Round(0.9*Breite); BMax:=round(1.1*Breite);
End;
3 : Begin // alles was abweicht an DINA4 bei angegebener DPI
HMin:=Hoehe; HMax:=Hoehe;
BMin:=Breite; BMax:=Breite;
End;
End; // Case Tolerance Of
// Werte des Bildes ermitteln
Hoehe:=Image1.Picture.Bitmap.Height;
Breite:=Image1.Picture.Bitmap.Width;
// Alles anzeigen
ShowMessage(IntToStr(Hoehe)+'x'+IntToStr(Breite)+#13+
IntToStr(HMin)+ 'x'+IntToStr(BMin)+#13+
IntToStr(HMax)+ 'x'+IntToStr(BMax));
If Hoehe In [HMin..HMax] Then
ShowMessage('drin')
Else
ShowMessage('nicht drin');
Ich habe das ganze mal im Kleinen versucht. Der folgende Code bringt keinerlei Fehlermeldung:
Delphi-Quellcode:
Procedure Bereichspruefung;
Var
Hoehe,HMin,HMax : Integer;
Begin
Hoehe:=Round(200 * 11.7); // Pixelhöhe von DINA4 bei 200 dpi
HMin:=Round(0.7 * Hoehe);
HMax:=Round(1.3 * Hoehe);
Hoehe:=Image1.Picture.Bitmap.Height;
If Hoehe In [HMin..HMax] Then
ShowMessage('Ist drin.')
Else
ShowMessage('Ist nicht drin.');
End;
Eventuell bin ich völlig betriebsblind. Aber ich sehe den Unterschied nicht.
Was mache ich verkehrt?