AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit dll und pchar

Ein Thema von Nicolai1234 · begonnen am 19. Apr 2004 · letzter Beitrag vom 19. Apr 2004
Antwort Antwort
Seite 2 von 3     12 3      
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Problem mit dll und pchar

  Alt 19. Apr 2004, 18:57
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:
MeinShortString := shortstring(MeinString); und in meinem Programm:
MeinString := string(MeinShortString); So kann ich es doch machen oder?
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#12

Re: Problem mit dll und pchar

  Alt 19. Apr 2004, 18:58
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
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#13

Re: Problem mit dll und pchar

  Alt 19. Apr 2004, 19:00
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:
MeinShortString := shortstring(MeinString); und in meinem Programm:
MeinString := string(MeinShortString); So kann ich es doch machen oder?
NEIN!

In der Dll:

MeinShortString := MeinString; // Achtung alles was mehr als 255 Zeichen sind, wird abgeschnitten Deinen Prog.
MeinString := MeinShortString;
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Problem mit dll und pchar

  Alt 19. Apr 2004, 19:06
Also einfach einander zuweisen. Habe ich verstanden!!!
Und diesen Teil muss ich gar nicht weiter verwenden.
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
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#15

Re: Problem mit dll und pchar

  Alt 19. Apr 2004, 19:12
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.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Problem mit dll und pchar

  Alt 19. Apr 2004, 19:20
Ic habe mich jetzt für shortstring entschieden!
Jetzt habe ich in der dll folgende function:
function rueckgabe(herkunft:shortstring):shortstring; In der letzten Zeile der function steht:
result := ergebnis; //ergebnis ist ein string (bestehend aus 5 Zeichen) An dieser Zeile entsteht ein fehler. Warum?
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#17

Re: Problem mit dll und pchar

  Alt 19. Apr 2004, 19:26
Welcher Fehler?
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Problem mit dll und pchar

  Alt 19. Apr 2004, 19:30
Folgende Fehlermeldung tritt dann bei mir auch:

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

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#19

Re: Problem mit dll und pchar

  Alt 19. Apr 2004, 19:38
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;
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: Problem mit dll und pchar

  Alt 19. Apr 2004, 19:40
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!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 01:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz