![]() |
Re: [IB/FB] UDFs ?
Wenn Du etwas tiefer in die Materie UDF Programmierung mit Delphi einsteigen willst:
![]() |
Re: [IB/FB] UDFs ?
Hi Hansa,
auf meiner Seite gibts dazu auch was (Serverprogrammierung von IB/FB). Auf was Du achten musst: Wenn Du mit Strings arbeitest musst Du für Speicher sorgen! Du übergibst hier Strings an ein C/C++ Programm! Grüße Lemmy |
Re: [IB/FB] UDFs ?
Lemmy, das ist mir schon klar. Und Deine Tutos sind längst ausgedruckt und abgeheftet. :thumb: Bzw. liegt das eine noch hier rum. :mrgreen: Eine offene Frage (siehe oben) ist noch, ob das FREE_IT alleine ausreicht den Speicher wieder freizugeben.
|
Re: [IB/FB] UDFs ?
Alsooo, FREE_IT benutzt du in verbindung mit der speicherallozierung mit ib_util_malloc, und eigentlich nur dann notwendigerweise, wenn du strings verarbeitest und zurückgibst.
GetMem aus Delphi funktioniert anders als ib_util_malloc welches speziell eine c++ allozierung vornimmt. Wenn du "nur" einen numerischen (z.b. integer) wert zurückgibst bzw. als parameter (fester länge) hin und zurück gibst, kannst du das result by_reference oder by_value (nicht zu empfehlen!) übergeben und abholen, da hier immer dieselbe speicheradresse verwendet wird und die größe konstant ist. Mit Strings wie gesagt musst du den speicher mit ib_util_malloc allozieren und in deiner UDF-Dekalration mit FREE_IT wieder freigeben, sonst gibt's schrott und das ganze ist nicht mehr threadsafe! |
Re: [IB/FB] UDFs ?
Mich stört halt folgendes : in IBExpert steht bei Return Mechanism "by reference" und die CheckBox für FREE_IT ist angekreuzt. In der DDL von der UDF (echtes computerchinesisch) :mrgreen: ist nur das FREE_IT zu sehen. Und Du meinst, beim Erstellen der DLL muß man das IB_UTIL_ALLOC verwenden, oder wie ? Dann muß ich mal gucken.
|
Re: [IB/FB] UDFs ?
Zitat:
Zitat:
![]() ![]() |
Re: [IB/FB] UDFs ?
Guten Morgen Hansa,
Zitat:
Du solltest wirklich nochmal das Tutorial anschauen ;-) Genau das steht drin! Du brauchst die Funktion damit Du den Speicher belegen kannst - ansonsten wird das Ding Deinen PC abschißen! Lemmy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz