Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit dll und pchar (https://www.delphipraxis.net/20520-problem-mit-dll-und-pchar.html)

Nicolai1234 19. Apr 2004 17:57

Re: Problem mit dll und pchar
 
Meine dll wird nur von meinem Prgramm sprich Delphi verwendet und es sind weniger als 255 Zeichen!
Also mit shortstring wäre das kein Problem? Dann kann ich in der dll schreiben:
Delphi-Quellcode:
MeinShortString := shortstring(MeinString);
und in meinem Programm:
Delphi-Quellcode:
MeinString := string(MeinShortString);
So kann ich es doch machen oder?

neolithos 19. Apr 2004 17:58

Re: Problem mit dll und pchar
 
In der Dll:

Delphi-Quellcode:
function GetDataName(pStr : PChar; iStrLen : Integer) : Integer;
var sDataName : String;
begin
  sDataName := 'Hallo Welt!'; // Irgentein Text

  Result := Min(Length(sDataName), iStrLen - 1); // Passt die Zeichenkette in den Speicher ?
// wenn nicht kopiere was geht, sonst kopiere Text
// + setzen des Rückgabewertes der tatsächlich kopierten Zeichen
  StrLCopy(pStr, PChar(sDataName), Result); // Sicheres kopieren in den Buffer
end;
In Prog z.B.:
Delphi-Quellcode:
  SetLength(sStr, 1024); // Erstelle Buffer für 1024 Zeichen
  SetLength(sStr,
     GetDataName(
       PChar(sStr), // Übergib Buffer
       1024) // Sage wieviel Byte der Buffer hat
   ); // Lösche alle Überflüssigen Bytes, die Hintendranhängen
Buffer = Dynamischer Speicher

neolithos 19. Apr 2004 18:00

Re: Problem mit dll und pchar
 
Zitat:

Zitat von Nicolai1605
Meine dll wird nur von meinem Prgramm sprich Delphi verwendet und es sind weniger als 255 Zeichen!
Also mit shortstring wäre das kein Problem? Dann kann ich in der dll schreiben:
Delphi-Quellcode:
MeinShortString := shortstring(MeinString);
und in meinem Programm:
Delphi-Quellcode:
MeinString := string(MeinShortString);
So kann ich es doch machen oder?

NEIN!

In der Dll:

Delphi-Quellcode:
MeinShortString := MeinString; // Achtung alles was mehr als 255 Zeichen sind, wird abgeschnitten
Deinen Prog.
Delphi-Quellcode:
MeinString := MeinShortString;

Nicolai1234 19. Apr 2004 18:06

Re: Problem mit dll und pchar
 
Also einfach einander zuweisen. Habe ich verstanden!!!
Und diesen Teil muss ich gar nicht weiter verwenden.
Zitat:

Zitat von neolithos
In der Dll:

Delphi-Quellcode:
function GetDataName(pStr : PChar; iStrLen : Integer) : Integer;
var sDataName : String;
begin
  sDataName := 'Hallo Welt!'; // Irgentein Text

  Result := Min(Length(sDataName), iStrLen - 1); // Passt die Zeichenkette in den Speicher ?
// wenn nicht kopiere was geht, sonst kopiere Text
// + setzen des Rückgabewertes der tatsächlich kopierten Zeichen
  StrLCopy(pStr, PChar(sDataName), Result); // Sicheres kopieren in den Buffer
end;
In Prog z.B.:
Delphi-Quellcode:
  SetLength(sStr, 1024); // Erstelle Buffer für 1024 Zeichen
  SetLength(sStr,
     GetDataName(
       PChar(sStr), // Übergib Buffer
       1024) // Sage wieviel Byte der Buffer hat
   ); // Lösche alle Überflüssigen Bytes, die Hintendranhängen
Buffer = Dynamischer Speicher


neolithos 19. Apr 2004 18:12

Re: Problem mit dll und pchar
 
Das kompliziertere Bsp gilt für Zeichenketten die mehr als 255 Zeichen enthalten. Hat also auch seine Berechtigung.

Du musst entscheiden was du machen möchtest.

Nicolai1234 19. Apr 2004 18:20

Re: Problem mit dll und pchar
 
Ic habe mich jetzt für shortstring entschieden!
Jetzt habe ich in der dll folgende function:
Delphi-Quellcode:
function rueckgabe(herkunft:shortstring):shortstring;
In der letzten Zeile der function steht:
Delphi-Quellcode:
result := ergebnis; //ergebnis ist ein string (bestehend aus 5 Zeichen)
An dieser Zeile entsteht ein fehler. Warum?

neolithos 19. Apr 2004 18:26

Re: Problem mit dll und pchar
 
Welcher Fehler?

Nicolai1234 19. Apr 2004 18:30

Re: Problem mit dll und pchar
 
Folgende Fehlermeldung tritt dann bei mir auch:

Zitat:

Zitat von Die Fehlermeldung
Zugriffsverletzung bei Adresse 003248C2 in Modul 'MeineDLL.dll'. Schreiben von Adresse 00000002.


neolithos 19. Apr 2004 18:38

Re: Problem mit dll und pchar
 
Bei mir gibt es keine Zugriffsverletzung:


Prog:
Delphi-Quellcode:
function Hallo(tst : ShortString) : ShortString;
  external 'Project2.dll';

procedure TForm1.Button3Click(Sender: TObject);
begin
  ShowMessage(Hallo('Hallo'));
end;
In der Dll:
Delphi-Quellcode:
function Hallo(tst : ShortString) : ShortString; export;
begin
  Result := tst + ' Welt';
end;

exports
  Hallo;

Nicolai1234 19. Apr 2004 18:40

Re: Problem mit dll und pchar
 
du verwendest ja uch keinen string! Ich habe ja in der dll einen string, den ich dann zu einem shortstring mache und dabei tritt der Fehler auf!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr.
Seite 2 von 3     12 3      

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