AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein dll einbinden delphi 7 beispiel zugriffsfehler
Thema durchsuchen
Ansicht
Themen-Optionen

dll einbinden delphi 7 beispiel zugriffsfehler

Ein Thema von sneumann · begonnen am 19. Okt 2011 · letzter Beitrag vom 20. Okt 2011
Antwort Antwort
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#1

AW: dll einbinden delphi 7 beispiel zugriffsfehler

  Alt 19. Okt 2011, 12:36
Nimm mal bitte nicht var blubber : Char sondern blubber : PChar .
Dadurch kannste das dann fast wie einen String benutzen.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
sneumann
(Gast)

n/a Beiträge
 
#2

AW: dll einbinden delphi 7 beispiel zugriffsfehler

  Alt 19. Okt 2011, 13:38
Nimm mal bitte nicht var blubber : Char sondern blubber : PChar .
Dadurch kannste das dann fast wie einen String benutzen.
zum Vorschlag von chaosben:
wenn ich deinen Vorschlag nehme und oben beim deklarieren var weglasse und stattdessen instidstring: PChar (value: Pchar) schreibe, und unten bei den im Aufruf so schreibe
Delphi-Quellcode:
instidstring: Pchar;
value: Pchar;
ANSTATT:
var instidstring: Char {in der Deklaration} var instidstring: Char; {imAufruf} //das gleiche mit value DANN zeigt er mir beim debuggen nicht mal an 'Wert nicht verfügbar', wenn ich im debuggen dann über value oder instidstring rüber gehe zeit er mir garnix an!

Bisher habe ich ja nur geschafft den ersten Char von IDstring (der war 'B' für Burster...etc..) und
der für value (war '-' was auch richtig wäre für -7°). Das geht ja schonmal,also kann ja eig nicht viel falsch sein.
jetzt muss ich das nur noch hinkriegen dass er mir alles ausgibt als String wahrs.

zu himitsu
char* value ist zwat "vom Wortlaut" her ein Zeiger auf
phi-Version (oder Lazarus) ...... und was überhaupt möglich ist.
1. Also in dem VB6 Project, was auch funktioniert steht vorher sowas:
instidstring = Space(50) also er macht sozusagen platz für 50 zeichen für den id string bei mir
und für den value der string measure methode legt er vor der funktion
value = Space(20) frei
das muss ich wahrscheinlich bei delphi auch so vorher machen!? Meinst du das?
2.probiere das jetzt beides: einmal mit ansi char und einmal mit Pansichar für Value meinst du ? oder auch für den ID string?
Wenn sich die DLL sozusagen nicht anpassen kann weil es dort ja als char* deklariert ist sozusagen geht das dann überhaupt wenn ich hier in meinem Delphi prog dann es mit ansichar bzw Pansichar versuche

3.Habe bei mir im Profil jetzt Delphi 7 Prof hinzugefügt.


EDIT: Der immerwiederkehrende Zugriffsfehler hängt wahrscheinlich auch damit zusammen ich versuchs mal mit ansichar und pansichar


EDIT 2: Übrigens Value soll ungefähr so aussehen dann : '25,4° Cel'
und instridstring sieht ungefähr so aus 'BursterString id 12316519464 Version 12,343 , 005'

Geändert von sneumann (19. Okt 2011 um 13:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: dll einbinden delphi 7 beispiel zugriffsfehler

  Alt 19. Okt 2011, 13:42
Versuch es doch mal in der Art:
Delphi-Quellcode:
var
  Blabb: AnsiString;
begin
  SetLength(Blabb, 300); //oder eine andere zu erwartende maximale Länge
  error := bp4422_read_measure_string(instid, PAnsiChar(Blabb));
  SetLength(Blabb, StrLen(PAnsiChar(Blabb)));
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
sneumann
(Gast)

n/a Beiträge
 
#4

AW: dll einbinden delphi 7 beispiel zugriffsfehler

  Alt 20. Okt 2011, 08:50
Versuch es doch mal in der Art:
Delphi-Quellcode:
var
  Blabb: AnsiString;
begin
  SetLength(Blabb, 300); //oder eine andere zu erwartende maximale Länge
  error := bp4422_read_measure_string(instid, PAnsiChar(Blabb));
  SetLength(Blabb, StrLen(PAnsiChar(Blabb)));
also habs jetzt mal so versucht aber auch wieder Wert nicht verfügbar
Delphi-Quellcode:
var
instidstring: AnsiString;

begin
SetLength(instidstring, 3);
error := bp4422_init(4,9600,2,0,0,0,AnsiString(instidstring),0,instid);
SetLength(instidstring, StrLen(PAnsiChar(instidstring)));
Wenn ich Setlength mache ist wert nicht verfügbar...
wie muss dann die definition in der deklaration oben sein?
brauch ich die zweite setlenght erst nach der funktionsanweisung? wofür ist die zweite...

vielleicht muss ichs mal irgendiwe mit nem array of char versuchen aber habs auch schon versucht array[1..50] of char in der anweisung und oben einfach nur array of char was gibt es noch für string typen vielleicht oder array die ich ausprobieren könnte um diesen blöden pointer auf ein char array zu kriegen und den wert hinterher richtig rauszuholen

Geändert von sneumann (20. Okt 2011 um 08:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: dll einbinden delphi 7 beispiel zugriffsfehler

  Alt 20. Okt 2011, 10:02
Dir fällt aber schon auf, dass wir beide unterschiedliche Dinge tun?
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
sneumann
(Gast)

n/a Beiträge
 
#6

AW: dll einbinden delphi 7 beispiel zugriffsfehler

  Alt 20. Okt 2011, 11:12
Dir fällt aber schon auf, dass wir beide unterschiedliche Dinge tun?
ja weiss schon hab bisschen was verändert weil er vorher nicht compiliert hat aber irgendwie hauts net hin ich bin am überlegen das ganze jetzt mit der Komponente T Comport zu realisieren und die serielle Stelle damit anzusprechen und zu kommunizieren aber da öffnet und schließt er den comport auch schon aber das senden der befehle um empfangen haut noch nicht ganz hin...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: dll einbinden delphi 7 beispiel zugriffsfehler

  Alt 20. Okt 2011, 11:21
Du bist doch schon nah dran. Nochmal etwas Code, diesmal kommentiert:
Delphi-Quellcode:
function bp4422_init(COMPort: integer; baudRate: integer; timeout_seconds: double; blockCheck: integer; groupAddress: integer; userAddress: integer; instrumentIDString: PChar; resetDevice: integer; var instrumentID: Integer): integer; stdcall; external DLLNAME;

var
  instidstring: AnsiString;
  instid: integer;
begin
  (* Speicher für einen String mit 3 Zeichen reservieren *)
  SetLength(instidstring, 3);
  (* Funktion aufrufen, dabei einen Zeiger auf den String übergeben *)
  error := bp4422_init(4, 9600, 2, 0, 0, 0, PAnsiChar(instidstring), 0, instid);
  (* Nach korrekter Befüllung ist der String u.U. zu lang für den Inhalt, deshalb auf Datenlänge kürzen *)
  SetLength(instidstring, StrLen(PAnsiChar(instidstring)));
Statt mit PAnsiChar(instidstring) kannst Du es auch mit @instidstring[1] versuchen.
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
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 10:12 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 by Thomas Breitkreuz