afrunding
jeg har prøvet at ændre lidt i et script jeg har hentet fra nettet så det ser sådan her ud:PROCEDURE BitmapToRGBValues(CONST BMPFilename : STRING;
CONST BMPFilename1: STRING;
CONST tal : Integer;
CONST DataFilename: STRING);
VAR
Bitmap : TBitmap;
Bitmap1 : TBitmap;
DataFile: TextFile;
i : INTEGER;
j : INTEGER;
row : pRGBTripleArray;
row1 : pRGBTripleArray;
prove : Extended;
BEGIN
Bitmap := TBitmap.Create;
Bitmap1 := TBitmap.Create;
TRY
Bitmap.LoadFromFile(BMPFilename);
Bitmap1.LoadFromFile(BMPFilename1);
Bitmap.PixelFormat := pf24bit; // in case not pf24bit
Bitmap1.PixelFormat := pf24bit; // in case not pf24bit
Assignfile(DataFile, DataFilename);
REWRITE(DataFile);
WRITELN(DataFile, FileSignature);
WRITELN(DataFile, Bitmap.Width, \' \', Bitmap.Height);
FOR j := 0 TO Bitmap.Height-1 DO
BEGIN
row := Bitmap.Scanline[j];
row1 := Bitmap1.Scanline[j];
WRITE(DataFile, \'R \');
FOR i := 0 TO Bitmap.Width-1 DO
begin
prove := (row[i].rgbtRed/100*tal) + (row1[i].rgbtRed/100*(100-tal));
WRITE(DataFile, prove:4);
end;
WRITELN(Datafile);
WRITE(DataFile, \'G \');
FOR i := 0 TO Bitmap.Width-1 DO
begin
prove := (row[i].rgbtGreen/100*tal) + (row1[i].rgbtGreen/100*(100-tal));
WRITE(DataFile, prove:4);
end;
WRITELN(DataFile);
WRITE(DataFile, \'B \');
FOR i := 0 TO Bitmap.Width-1 DO
begin
prove := (row[i].rgbtBlue/100*tal) + (row1[i].rgbtBlue/100*(100-tal));
WRITE(DataFile, prove:4);
end;
WRITELN(DataFile)
END;
CloseFile(DataFile)
FINALLY
Bitmap.Free;
Bitmap1.Free;
END
END {BitmapToRGBValues};
men jeg får en fejlmeddelelse og jeg har en lille idé om at det er fordi at jeg dividerer nogle tal og så bliver det til kommatal som er længere end 4 decimaler men hvordan kan man så afrunde til nærmeste hele tal??
