AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

UDF Lazarus 64Bit

Ein Thema von Gruber_Hans_12345 · begonnen am 9. Sep 2009 · letzter Beitrag vom 9. Sep 2009
Antwort Antwort
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.438 Beiträge
 
Delphi 2007 Professional
 
#1

UDF Lazarus 64Bit

  Alt 9. Sep 2009, 15:25
Datenbank: Firebird • Version: 2.1.2 • Zugriff über: UDF
Hallo

Meine UDF für 64Bit funktioniert unter 64Bit Server nicht richtig, habe einfach den gelichen Quellcode genommen wie für 32 Bit, aber ich bekomme als Result immer NULL raus.

Muß ich hier irgendwo was umbasteln, sprich bekomme ich irgendwo 64Bit werte in den Aufruf der UDF, wo normalerweise 32Bit sein sollten?

das sind die typen die verwendet werden ...
Delphi-Quellcode:
type
  Int = LongInt; // 32 bit signed
  UInt = DWord; // 32 bit unsigned
  Long = LongInt; // 32 bit signed
  ULong = DWord; // 32 bit unsigned
  Short = SmallInt;// 16 bit signed
  UShort = Word; // 16 bit unsigned
  Float = Single; // 32 bit
  UChar = Byte; // 8 bit unsigned
  ISC_LONG = Long; // 32 bit signed
  UISC_LONG = ULong; // 32 bit unsigned
  ISC_STATUS = Long; // 32 bit signed
  UISC_STATUS = ULong; // 32 bit unsigned
  Void = Pointer;
  // Delphi "Pointer types"
  PPChar = ^PChar;
  PSmallInt = ^SmallInt;
  PInt = ^Int;
  PInteger = ^Integer;
  PShort = ^Short;
  PUShort = ^UShort;
  PLong = ^Long;
  PULong = ^ULong;
  PFloat = ^Float;
  PUChar = ^UChar;
  PVoid = ^Pointer;
  PDouble = ^Double;
  PISC_LONG = ^ISC_LONG;
  PUISC_LONG = ^UISC_LONG;
  PISC_STATUS = ^ISC_STATUS;
  PPISC_STATUS = ^PISC_STATUS;
  PUISC_STATUS = ^UISC_STATUS;
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#2

Re: UDF Lazarus 64Bit

  Alt 9. Sep 2009, 16:02
Delphi-Quellcode:
Int = Int64; // 64 bit signed
UInt = UInt64; // 64 bit unsigned
PInt = PInt64;
oder
Delphi-Quellcode:
Int = Integer; // 32/64 bit signed
UInt = Cardinal; // 32/64 bit unsigned
PInt = PInteger;
Letzeres nutzt den standardtypen des Compilers ... also bei einem 32-Bit-Compiler LongInt und bei einem 64-Bit-Compiler Int64.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#3

Re: UDF Lazarus 64Bit

  Alt 9. Sep 2009, 16:23
Hi,

das dachte ich auch, bis ich feststellen musste, dass in meinem Lazarus Win64 ein Integer auch nur 32 Bit groß ist (bzw. ein sizeof(Integer) liefert eine 4).

Gruß
Felix
Felix Alter
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

Re: UDF Lazarus 64Bit

  Alt 9. Sep 2009, 16:26
Und da sagen alle noch, daß Lazarus sooooo super sei
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.438 Beiträge
 
Delphi 2007 Professional
 
#5

Re: UDF Lazarus 64Bit

  Alt 9. Sep 2009, 16:29
das habe ich auch schon irgendwo gelesen, aber mein problem ist, das ich nicht weiss was Firebird in der UDF nun genau haben möchte ... 32Bit, 64Bit, 16Bit ?!?!
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#6

Re: UDF Lazarus 64Bit

  Alt 9. Sep 2009, 16:47
Hi,

guck mal ob irgendwelche Pointer gecastet werden. Pointer sind natürlich 64 Bit groß auf nem 64 Bit System.

http://wiki.freepascal.org/Integer schreibt:
FPC currently uses 32 bits (4 bytes) for integers, whether the machine is a 32-bit or 64-bit machine. This will cause code expecting an integer and a pointer to be the same size to fail as a 64-bit machine uses 64-bit pointers. To allow you to write portable code, the FPC system unit introduces the types PtrInt and PtrUInt which are signed and unsigned integer data types with the same size as a pointer.


Gruß
Felix
Felix Alter
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.438 Beiträge
 
Delphi 2007 Professional
 
#7

Re: UDF Lazarus 64Bit

  Alt 9. Sep 2009, 17:00
also, läuft jetzt, komischeweise mußte ich einen rückgabewert, der vorher integer war, nun auf word umändern .... keine ahnung warum kommt mir sehr merkwürdig vor

Aber es geht auf jeden fall nun.
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 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