![]() |
Den C Beispiel-Code (zumindest das Interessante) könntest du doch mal posten. Deine Delphi deklaration sowie die Einbindung der Funktion (function ... external 'dllname.dll') wäre auch nicht schlecht. Dann würde diese Diskussion nicht nur auf theoretischer Basis ablaufen.
|
Erst mal an alle die mir bei meinem blöden Problem helfen Dank!!!! :oops: :oops:
Ich habe jbg gerade den Code in das private Postfach gestellt. Da die DLL's lizensrechtlich geschützt sind möchte ich das Ganze nicht so doll öffentlich machen. Sorry :oops: :oops: !! Wer mir sonst noch weiter helfen kann soll sich melden. Ich sende dann den Code auch dort hin. So, dann Dank, Dank, Dank bis hierhin Gruß Olaf |
Zitat:
Ich wollte auch nicht, dass du gleich die ganze DLL schickst, sondern aus dem C Beispiel nur die Deklaration der Struktur und den Aufruf sowie die Dekl. der Funktion. Dasselbe auch von deinem Delphi Beispiel. |
Ich habe den Fehler gefunden. Und zwar liegt es an der Übersetzung des Typs BOOL nach Boolean. Der BOOL Typ ist als int deklariert und somit 32 Bit groß. Die Entsprechung in Delphi ist LongBool (32 Bit) und nicht Boolean (8 Bit). Also einfach in der Datei MapDefs.pas ein Suchen/Ersetzen machen: Boolean -> LongBool
|
Hallo jbp,
wenn das stimmt gebe ich einen aus. Ich prüf das gleich. Gruß Olaf |
Hallo jbp,
ähhhm, nach dem Motto suche einen Fehler und du findest 10. Ich habe Deinen Vorschlag gerade umgesetzt. Das hat meinen Fehler aber leider nicht beseitigt. Sag mal kurz bescheid ob du das Projekt mal ausprobiert hast und mit welcher Delphi-Version. Gruß Olaf |
Ausprobiert habe ich es unter Delphi 6 Pro und WinXP Pro. Das Programm läuft soweit, dass es ohne dass ein Button gedrückt wird, ohne Fehler startet. Also den wahren Fehler habe ich noch nicht gefunden. Aber so weit wie ich gerade bin, liegt es nicht an der Ausrichtung der Felder, denn die ist auch bei C++ trotz ALIGN:8 nicht anders als die von Delphi.
|
Hallo jbg,
herzlichen Dank für Deinen Code zu meinem Problem. Ich habe diesen mal ausprobiert. Dazu mußte ich aber die Direktive {$Align 8} auskommentieren da D5 diese nicht kennt. Das Setzen der Objecte klappt anstandslos. Beim Verbinden bekomme ich den Fehler Lesen von Adresse $FFFFFFFF. Da Du auch diese Methode verändert hast gehe ich davon aus, dass sie bei Dir läuft. Ich bin jetzt immer mehr davon überzeugt, dass ich auf mind. D6 updaten muß um die Sache in den Griff zu bekommen. Meine getesteten BS sind übriegens Win98 und 2000. Bei beiden mein Fehler. Gruß Olaf |
Ich habe die beiden Buttons natürlich einzeln getestet. Da kommt kein Fehler. Du musst folgendes einfügen, damit es ohne AV funktioniert.
Delphi-Quellcode:
[/quote]
procedure TForm1.MakeCon(Anzahl: Integer);
... begin Viewer := MapForm.Viewer; if Anzahl < 2 then Exit; // alle bestehenden Temp. Objecte entfernen Viewer.RemoveAllTempObjects; <---- Viewer.RemoveAllConnections; <---- |
Hallo jbg,
ich hab die ganze Zeit gegrübelt was Du mir beibringen willst. Da ich Dir die Doku zur DLL nicht mit zugestellt habe reden wir beide wahrscheinlich gerade aneinander vorbei. Mit der Methode MakeCon werden Verbindungslinien zwischen temp. Objekten gezogen. Sind diese nicht vorhanden, so wird keine Linie gezeichnet. Mein Testbeispiel ist hier natürlich nicht sehr plausibel. Du mußt zuerst eine Anzahl von Objekten setzen und kannst diese dann mittels MultitempConnect verbinden. Die Elemente gelten wie folgt:
Delphi-Quellcode:
Die ID wird beim Setzen der Objekte (SetTemoObjectExt) festgelegt. Im Normalfall sollte sie eindeutig sein (beim Test erst mal vernachlässigt, ist hierfür alles nicht so wichtig; wird dann alles in meiner eigentlichen Applikation berücksichtigt).
TMultiTempConnect = record
mtc_startid : UINT; // Ausgangsobjekt der Linie mtc_connection : TTempConnect; // Struktur mit Zielobjekt und // Verbindungsattributen Also, der Normalablauf ist so: - Setzen einer Anzahl von Objekten mittels SetTempObjectExt, - Verbinden der Objekte mittels AddMultiConnections - neu zeichnen der Karte mittels Redraw zur Anzeige der Verbindungslinien. Dann auf ein Neues. Gruß Olaf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 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