AGB  ·  Datenschutz  ·  Impressum  







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

Pointer Problem

Ein Thema von TurboMagic · begonnen am 22. Apr 2021 · letzter Beitrag vom 22. Apr 2021
Antwort Antwort
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Pointer Problem

  Alt 22. Apr 2021, 13:24
Versuch mal folgendes:

Delphi-Quellcode:
procedure TMainForm.OnCLick(Sender:TObject);
var
  Data : TBytes;
begin
  SetLength(Data, 4);
  Data[0] := 1;
  Data[1] := 2;
  Data[2] := 3;
  Data[3] := 4;

  DoIt(Length(Data), Pointer(Data)); // oder Pointer(Data[0])
end;
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.050 Beiträge
 
Delphi 12 Athens
 
#2

AW: Pointer Problem

  Alt 22. Apr 2021, 13:29
Das funktioniert so leider nicht.
Ich baue es jetzt auf Speicher reservieren um.
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Pointer Problem

  Alt 22. Apr 2021, 14:13
Du allozierst da ja eigentlich schon Speicher mit dem SetLength. Ich würde darauf tippen, dass deine DLL eventuell fasch deklariert ist. Poste doch auch bitte mal die Deklaration der DLL Definition.

Habe hier noch ein sehr gutes Dokument zu diesem Thema gefudnen, das du dir unbeding durchlensen solltest.
http://rvelthuis.de/articles/articles-dlls.html

Geändert von Rolf Frei (22. Apr 2021 um 14:16 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.050 Beiträge
 
Delphi 12 Athens
 
#4

AW: Pointer Problem

  Alt 22. Apr 2021, 14:15
Asche auf mein Haupt!

@Data[0] geht doch!
Der weitere Code in der DLL hatte noch diverse andere Fehlerchen!

Was aber krachte war: Pointer(Data[0], da fehlte wohl der Addressoperator drin.
Was aber auch funktionierte war GetMem auf einen normalen Pointer und den übergeben.
Nur ist @Data[0] schöner und erspart das Umkopieren der Daten in den normalen Pointer.
Ja, man hätte dem auch einfach auf @Data[0] zuweisen können.
ABer @Data[0] ist halt am leserlichsten für meine Zwecke.
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
268 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Pointer Problem

  Alt 22. Apr 2021, 15:25
Wenn die DLL von verschiedenen Sprachen (in 32Bit Systemen) aufgerufen werden soll, dann solltest Du evtl. auch StdCall als Aufrufconvention definieren.
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.050 Beiträge
 
Delphi 12 Athens
 
#6

AW: Pointer Problem

  Alt 22. Apr 2021, 16:16
Hallo,

nein. Die Forderung hier war cdecl statt StdCall
wegen Plattformunabhängigkeit. Das war ja aber nicht das Problem,
sondern Copy & Paste Programmierung und dann nicht alles richtig
angepasst an die neuen Randbedingungen.

Grüße
TurboMagic
  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 14:13 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