AGB  ·  Datenschutz  ·  Impressum  







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

[IB/FB] UDFs ?

Ein Thema von Hansa · begonnen am 25. Mär 2006 · letzter Beitrag vom 27. Mär 2006
Antwort Antwort
Seite 2 von 2     12   
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#11

Re: [IB/FB] UDFs ?

  Alt 25. Mär 2006, 23:49
Wenn Du etwas tiefer in die Materie UDF Programmierung mit Delphi einsteigen willst: UDF-Tutorial
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#12

Re: [IB/FB] UDFs ?

  Alt 26. Mär 2006, 17:31
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
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#13

Re: [IB/FB] UDFs ?

  Alt 26. Mär 2006, 18:50
Lemmy, das ist mir schon klar. Und Deine Tutos sind längst ausgedruckt und abgeheftet. Bzw. liegt das eine noch hier rum. Eine offene Frage (siehe oben) ist noch, ob das FREE_IT alleine ausreicht den Speicher wieder freizugeben.
Gruß
Hansa
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#14

Re: [IB/FB] UDFs ?

  Alt 26. Mär 2006, 19:48
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!
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#15

Re: [IB/FB] UDFs ?

  Alt 26. Mär 2006, 20:10
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) 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.
Gruß
Hansa
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#16

Re: [IB/FB] UDFs ?

  Alt 26. Mär 2006, 22:20
Zitat von Hansa:
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) ist nur das FREE_IT zu sehen.
by reference ist der Standardmechanismus bei IB/FB.
Zitat:
Und Du meinst, beim Erstellen der DLL muß man das IB_UTIL_ALLOC verwenden, oder wie ? Dann muß ich mal gucken.
Definitiv zum allozieren von Speicher für chararrays(=strings), sonst gibts Speichersalat.
Hier ist noch ein extensives Tutorial und schau dir mal den Quellcode von anderen UDF-Bibliotheken an.
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#17

Re: [IB/FB] UDFs ?

  Alt 27. Mär 2006, 06:46
Guten Morgen Hansa,

Zitat von Hansa:
Und Du meinst, beim Erstellen der DLL muß man das IB_UTIL_ALLOC verwenden, oder wie ? Dann muß ich mal gucken.

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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:05 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