Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Bitmapgröße via Stream in WIN und LINUX effizient auslesen (https://www.delphipraxis.net/204118-bitmapgroesse-via-stream-win-und-linux-effizient-auslesen.html)

bernhard_LA 25. Apr 2020 12:43

Bitmapgröße via Stream in WIN und LINUX effizient auslesen
 
mit diesem Code lesen wir sehr schnell die Größe einer Bitmap Datei aus, klappt unter WINDOWS perfekt.




Delphi-Quellcode:
function ReadBitmapsize(......);
var
  f: TFileStream;
  Buff: array [0 .. 10] of byte;
begin
  f := TFileStream.Create(FullName, fmOpenRead);
  try
    f.Seek(18, soFromBeginning);
    f.Read(Buff, 8);
    result.x := Buff[1] * 256 + Buff[0];
    result.y := Buff[5] * 256 + Buff[4];
  finally
    FreeAndNil(f);
  end;
end;

Wenn ich jetzt für LINUX compiliere bekomme ich folgende Fehlermeldung :

Delphi-Quellcode:
[DCC Error]     E2251 Ambiguous overloaded call to 'Seek'
  System.Classes.pas(983): Related method: function TStream.Seek(LongInt; Word): LongInt;
  System.Classes.pas(985): Related method: function TStream.Seek(const Int64; Word): Int64;

wie bekomme ich diesen code auf beiden Plattformen lauffähig ... mit minimaler Codeanpassung :-)

TurboMagic 25. Apr 2020 12:59

AW: Bitmapgröße via Stream in WIN und LINUX effizient auslesen
 
Hast du mal geprüft was passiert, wenn du die 18 in deinem Aufruf castest?
z.B. Int64(18) ?
Dann wird's evtl. eindeutig für den Compiler was er aufrufen soll.

hoika 25. Apr 2020 13:49

AW: Bitmapgröße via Stream in WIN und LINUX effizient auslesen
 
Hallo,
oder definiere eine lokale Variable mit dem passenden Datentyp.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz