AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fehler "access violation" - keine Ahnung, warum...
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler "access violation" - keine Ahnung, warum...

Ein Thema von Pow3rus3r · begonnen am 14. Aug 2012 · letzter Beitrag vom 16. Aug 2012
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Fehler "access violation" - keine Ahnung, warum...

  Alt 14. Aug 2012, 13:08
Bist sicher das der Zeiger identisch ist mit dem der als rückgabe bei open erzeut wird?
Hatte auch mal ein probleme das ein zeiger aus unerklärlichen gründen gelöscht bzw.. nicht gleich war.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fehler "access violation" - keine Ahnung, warum...

  Alt 14. Aug 2012, 13:13
Wie sieht denn das Headerfile zu der DLL aus? Eigentlich gibt es ja nur 2 Möglichkeiten:
- die DLL fordert den Speicher an, befüllt ihn und gibt den Zeiger zurück
- die DLL erwartet einen Zeiger auf selbst angeforderten Speicher und befüllt diesen

Auf jeden Fall vermute ich, dass das ein Zeiger auf den Record sein soll und kein untypisierter. Die Kombination von New() und anschließendem NULLen macht zumindest keinen Sinn.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Pow3rus3r

Registriert seit: 17. Apr 2012
43 Beiträge
 
Delphi XE Professional
 
#3

AW: Fehler "access violation" - keine Ahnung, warum...

  Alt 14. Aug 2012, 13:25
Wie sieht denn das Headerfile zu der DLL aus? Eigentlich gibt es ja nur 2 Möglichkeiten:
- die DLL fordert den Speicher an, befüllt ihn und gibt den Zeiger zurück
- die DLL erwartet einen Zeiger auf selbst angeforderten Speicher und befüllt diesen

Auf jeden Fall vermute ich, dass das ein Zeiger auf den Record sein soll und kein untypisierter. Die Kombination von New() und anschließendem NULLen macht zumindest keinen Sinn.
Der Zeiger müsste eigentlich stimmen, denn mit falschem Zeiger macht die hardware garnichts bei Aufruf der entsprechenden Funktionen. Aber nach Aufruf der Funktionen startet die hardware wie gewünscht eine Signalmanipulation. Auch dürfte die Funktion sonst keine 0 als Rückgabewert (Ausführung ok) liefern.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Fehler "access violation" - keine Ahnung, warum...

  Alt 14. Aug 2012, 13:28
Ich würde empfehlen erst mal richtig aufzuräumen.
Dazu gehört dass das Record TManipulationtag sowie die Deklarationen für function COM_TcpOpen usw. in eine eigene Unit verschoben werden.

Alles was zur Ansteuerung der DLL benötigt wird muss in eine eigene Unit gepackt werden.
Alles andere wäre unprofessionell.

Delphi-Quellcode:
unit HwCom;
{
Hier Doku über die DLL (Hersteller, Zweck, Webseite,...) rein

}



interface

uses
  Windows;

 type
  TManipulationtag = record
    TriggerType: byte; ///< Trigger 1: Identify whether the TriggerValue is an address or a value (0: trigger not active; 1:
  // ...
  end;

function COM_TcpOpen(var zeiger:Pointer; ipAddress:AnsiString; port:smallint): NativeUInt; stdcall;
...

implementation

const HWCOM_DLL = 'HwCom.dll';

function COM_TcpOpen(var zeiger:Pointer; ipAddress:AnsiString; port:smallint): NativeUInt; stdcall; external HWCOM_DLL;
...

end;
Die Unit HwCom wird dann per Uses in deiner Formularunit eingebunden.
Und dabei fällt mir sogleich ein Problem auf:
Du übergibst den Parameter ipAddress als AnsiString . Dieser Datentyp ist aber unter C/C++ unbekannt und dürfte wohl eher ein PAnsiChar sein.
  Mit Zitat antworten Zitat
Pow3rus3r

Registriert seit: 17. Apr 2012
43 Beiträge
 
Delphi XE Professional
 
#5

AW: Fehler "access violation" - keine Ahnung, warum...

  Alt 14. Aug 2012, 13:29
Bist sicher das der Zeiger identisch ist mit dem der als rückgabe bei open erzeut wird?
Hatte auch mal ein probleme das ein zeiger aus unerklärlichen gründen gelöscht bzw.. nicht gleich war.

gruss
Ja, der Zeigerinhalt ist gleich dem Rückgabewert der TcpOpen Funktion.
  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 18:48 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