Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Bereichsprüfung, aber wie?

  Alt 23. Sep 2008, 23:03
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?
Alex Winzer
  Mit Zitat antworten Zitat