OPbitmap - 64Bit Problem

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

OPbitmap - 64Bit Problem

Beitrag von Targion »

Folgende Zeile in opbitmap.pas:

Code: Alles auswählen

dparr^[(y + D.Top) * dwid + (D.Left + x)]:=Pixel32(((Color and $FF0000) shr 16) +
       ((Color and $00FF00)) +
       ((Color and $0000FF) shl 16)+
       ((Color and $FF000000)));
gibt auf 64bit-Systemen die Fehlermeldung

Code: Alles auswählen

opbitmap.pas(2464,50) Error: Illegal type conversion: "QWord" to "<record type>"
Gibt es da eine Lösung für? Funktioniert Typecasting auf 64bit-Systemen anders als auf 32bit-Systemen?

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: Bilder schnell laden (OPBitmap)

Beitrag von theo »

Keine Ahnung. Müsste ich mir mal auf 64 bit anschauen.
Bei dem Code-Auszug sehe ich eigentlich im Moment grad kein Problem.

Aber das OpBitmap Package wirst du auf 64 bit sowieso nicht vollständig installieren können.
Die GraphicEx ist voll von Assembler.

Auf 64 bit kannst du's höchstens auseinanderpflücken und nur die Teile benutzen, die 64 bit tauglich sind.
Opbitmap.pas müsste eig. schon klappen. Es gibt kein Asm oder Libc da drin.
Vielleicht nur ne Kleinigkeit. PtrInt / PtrUint?

PS. Die Funktion CopyRectPlain32SwapRGB kannst du auch auskommentieren, die braucht's nicht.

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: Bilder schnell laden (OPBitmap)

Beitrag von theo »

Targion, habe dir eine 64bit Version gebastelt.
Siehe: http://www.lazarusforum.de/viewtopic.php?f=29&t=434" onclick="window.open(this.href);return false;
Erster Beitrag ganz unten.

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Bilder schnell laden (OPBitmap)

Beitrag von Targion »

Vielen Dank! Leider behebt das nicht den Fehler. Konkret geht es (wieder mal) darum, ein Lazarusprojekt auf externen Buildsystemen von Launchpad und openSUSEs Build Service zu bauen. Und da bekomme ich diese Fehlermeldungen:
Im openSUSE Build Service (Lazarus 0.9.27 + fpc 2.2.3)
Im Launchpad PPA (Lazarus 0.9.26 + fpc 2.2.2-4)
Kann das wer mit einem "echten" 64-bit Linux bestätigen? (Der Build Service nutzt XEN)
Zuletzt geändert von Targion am Sa 7. Feb 2009, 21:47, insgesamt 2-mal geändert.

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: Bilder schnell laden (OPBitmap)

Beitrag von theo »

Targion hat geschrieben:Vielen Dank! Leider behebt das nicht den Fehler. Konkret geht es (wieder mal) darum, ein Lazarusprojekt auf externen Buildsystemen von Launchpad und openSUSEs Build Service zu bauen. Und da bekomme ich diese Fehlermeldungen:
Im openSUSE Build Service (Lazarus 0.9.27 + fpc 2.2.3)
Kann das wer mit einem "echten" 64-bit Linux bestätigen? (Der Build Service nutzt XEN)
Keine Ahnung von sowas.
Kannst du mal die Meldung hier posten? Ich wollte mich eigentlich nicht mit Namen bei Novell anmelden, und sonst sehe ich die Seite nicht.
Hat das überhaupt was mit OpBitmap zu tun?

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Bilder schnell laden (OPBitmap)

Beitrag von Targion »

Die Meldung ist die aus diesem Beitrag. (5 weiter oben ;-))
Das Problem hängt definitiv mit 64-bit Prozessoren und OPBitmap (oder FPC?) zusammen. (32-bit Builds funktionieren ja)
Ich würde das ja selber fixen, aber ich habe absolut keine Ahnung, warum die Typumwandlung unter 64bit nicht funktioniert.

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: Bilder schnell laden (OPBitmap)

Beitrag von theo »

Targion hat geschrieben:Die Meldung ist die aus diesem Beitrag. (5 weiter oben ;-))
Das Problem hängt definitiv mit 64-bit Prozessoren und OPBitmap (oder FPC?) zusammen. (32-bit Builds funktionieren ja)
Ich würde das ja selber fixen, aber ich habe absolut keine Ahnung, warum die Typumwandlung unter 64bit nicht funktioniert.
Hast du das Ding http://www.theo.ch/lazarus/opbitmap64.zip" onclick="window.open(this.href);return false; runtergeladen
und darin opbitmapforlazcompat.lpk instaliert? (Das müsste eig, auch für 32bit gehen, ist einfach abgespeckt).

Ich habe das auf 64bit entwickelt.

Edit: Wenn du's nicht via Package benutzt, musst du dem Compiler noch -dOpbCompat übergeben.
Die Sourcen sind die gleichen, die nicht portierbaren Teile sind mit Kompilerschalter ausgeschaltet.

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: OPbitmap - 64Bit Problem

Beitrag von Targion »

Ah! Danke! Der Compilerswitch hat noch gefehlt, jetzt funktioniert alles einwandfrei.

Antworten