Avatar billede cautoo Nybegynder
14. juli 2001 - 11:55 Der er 1 kommentar og
1 løsning

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??
Avatar billede martinlind Nybegynder
14. juli 2001 - 12:37 #1
Round();
Frac();
Avatar billede cautoo Nybegynder
14. juli 2001 - 15:59 #2
tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester