AGB  ·  Datenschutz  ·  Impressum  







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

UDF macht mist.

Offene Frage von "mojo777"
Ein Thema von mojo777 · begonnen am 17. Mai 2006 · letzter Beitrag vom 18. Mai 2006
Antwort Antwort
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#1

UDF macht mist.

  Alt 17. Mai 2006, 23:36
Datenbank: ib6 • Version: 6 • Zugriff über: sql
Guten Abend, ich habe heute meine erste udf geschrieben und muss sagen das geht ja alles recht einfach.
Leider funktioniert es nicht so wie es soll.
Meine funktion soll Die Distanz zwischen 2 Punkten berechnen (GPS-Koordinaten)
Hier die FKT in Delphi:
Delphi-Quellcode:
library DIST;

uses
  Math, SysUtils;

{$APPTYPE CONSOLE}


function GPSDIST(var lat1:Double; long1:Double; lat2:Double; long2:Double):Double; cdecl; export;
var x,y,z, phi1, phi2, eta1, eta2, entf,R:Double;
begin
R:=6371; //Radius der erde (als kugel)
phi1:=lat1*Pi/180;
eta1:=long1*Pi/180;

phi2:=lat2*Pi/180;
eta2:=long2*Pi/180;

x:=cos(eta1)*sin(phi1)-cos(eta2)*sin(phi2); //Die Differenzen bilden
y:=sin(phi1)*sin(eta1)-sin(phi2)*sin(eta2);
z:=cos(phi1)-cos(phi2);
entf:=R*sqrt(power(x,2)+power(y,2)+power(z,2)); //entfernung als norm berechnen
result:=entf;
end;


exports
  GPSDIST;
begin
end.
Jetzt habe ich z.b. eine tabelle mit unterschiedlichen orten und ich will gleichzeitig angezeigt bekommen, welche entfernung jeder von denen zu einem bestimmten punkt hat. das mache ich so:
SQL-Code:
SELECT GPSDIST(13.7705057, 51.0223236790861, PLZ.LAT, PLZ.LANG ) AS DIST,
    PLZ.LAT, PLZ.LANG
FROM PLZ
So. Alles schön und gut, aber komischerweise ist die Entfernung von jedem ort zum punkt immer gleich. (geschweige von GANZ FALSCH )
(so siehts aus: http://pilaf.ath.cx/pub/shared_pics/DIST.jpg )

nun. da sitze ich ratlos.

Die funktion habe ich separat (also in einem extra gui-fomular) schon getestet. da gabs keine größeren Abweichungen. (ausser dass ich die Erde als kugel statt Ellipse modelliert hab)

mfg
Muh macht die kUh
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: UDF macht mist.

  Alt 18. Mai 2006, 05:53
Warum übergibst du den 1. Parameter as var?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: UDF macht mist.

  Alt 18. Mai 2006, 07:07
Hi Mojo,

damit die UDF funktioniert musst du alle Eingabeparameter als VAR übergeben.

function GPSDIST(var lat1, long1, lat2, long2:Double):Double; cdecl; export; viel Spaß mit Deiner neuen UDF
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#4

Re: UDF macht mist.

  Alt 18. Mai 2006, 09:22


olé!!!
funktioniert!
DANKEEE!!!!!
Muh macht die kUh
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#5

Re: UDF macht mist.

  Alt 18. Mai 2006, 11:03
aber noch eine frage vorweg. da wir schon bei dem thema sind.
was passiert mit der db , wenn ich sie auf einen anderen pc kopieren? ich habe vorher immer firebird embeded benutzt und da werden ja die daten mit in das verzeichnis kopiert. soll dann meine DIST.dll mit in das verzeichnis, wo die exe ausgeführt wird?





mfg
Muh macht die kUh
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: UDF macht mist.

  Alt 18. Mai 2006, 11:17
Besser du kopierst deine DIST.DLL in das UDF Verzeichnis der Interbase-Installation auf der Zielmaschine.

marabu
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#7

Re: UDF macht mist.

  Alt 18. Mai 2006, 12:31
ok.
danke
Muh macht die kUh
  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 04: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