![]() |
Fehler bei pchar zu string bzw. umgekehrt! (durch dll???)
Ich habe einen string(s) und einen pchar(p).
Ich wandle den pchar wie folgt um:
Delphi-Quellcode:
Dabei entsteht ein Fehler; die letzten Zeichen des strings sind dann verändert bzw. nicht mehr da! Woran kann das liegen?
s := string(p);
Vielleicht muss ich noch dazu sagen, dass der pchar aus einer dll kommt! Kann es beim umgekehrten zu Fehlern kommen; also wenn ich aus dem Ergebnis der dll einen string mache? oder kann es sein, dass die dll falsch übergibt? |
Re: Fehler bei string zu pchar bzw. umgekehrt!
Zitat:
Delphi-Quellcode:
s := p;
|
Re: Fehler bei string zu pchar bzw. umgekehrt!
Weil das dann inkompatible Typen sind!!
|
Re: Fehler bei string zu pchar bzw. umgekehrt!
Zitat:
...oder so?
Delphi-Quellcode:
var
p: PChar; s: string; begin p := 'abd123'; s := StrPas(p); end; |
Re: Fehler bei string zu pchar bzw. umgekehrt!
Zitat:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s: String; p: PChar; begin p := 'Hello world'; s := p; ShowMessage(s); end; |
Re: Fehler bei string zu pchar bzw. umgekehrt!
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Anhang: Meine Fehlermeldung bei p := s (p->result ; s->ergebnis) |
Re: Fehler bei string zu pchar bzw. umgekehrt!
Zitat:
|
Re: Fehler bei string zu pchar bzw. umgekehrt!
Es ahndelt sich bei mir um eine function:
Delphi-Quellcode:
Nur
function rueckgabe(herkunft:pchar):pchar;
var ergebnis:string; .. begin ... if ergebnis = 'keine' then result := 'keine' else result := strpas(ergebnis);
Code:
geht auch nicht!
result := ergebnis
|
Re: Fehler bei string zu pchar bzw. umgekehrt!
Das liegt wohl daran, dass deine Funktion ein Ergebnis vom Typ PChar erwartet, du aber eines vom Typ String zurück geben willst.
|
Re: Fehler bei string zu pchar bzw. umgekehrt!
sorry, ist mein Fehler oben im qt eigentlich hatte ich ja auch: result := pchar(ergebnis);
Das geht ja auch. Nur das letzte Zeichen ist manchmal Falsch oder es kommt gar keins!!!! Vielleicht muss ich noch dazu sagen, dass der pchar aus einer dll kommt! Kann es beim umgekehrten zu Fehlern kommen; also wenn ich aus dem Ergebnis der dll einen string mache? oder kann es sein, dass die dll falsch übergibt? |
Re: Fehler bei pchar zu string bzw. umgekehrt! (durch dll???
Hallo,
der Thread ist zwar schon uralt, aber ich schreib dennoch mal weiter. Ich hatte eben exakt das gleiche Problem und habe festgestellt, dass es daran lag, dass ich FastMM4 verwende. Ohne die ging es. Der Aufbau ist folgender: Anwendung wandelt string in PChar -> Wird an Methode übergeben -> Methode wandelt PChar in String. Mit FastMM4 tritt das Problem auf, ohne FastMM4 nicht. Hat jemand eine Idee, wo das herrühren könnte? Ist das ein Bug in FastMM? Gruß |
Re: Fehler bei pchar zu string bzw. umgekehrt! (durch dll???
Ich wüßte eigentlich nicht wie das an FastMM liegen könnte, denn der hat ja nichs mit dem Kopieren/Zuweisen der Daten su tun.
FastMM reserviert ja nur Speicher und gibt den wieder frei ... was und vieviel es reservieren/freigeben soll wird ihm ja von anderen Routinen gesagt und das kopieren der Daten(des Strings) zwischen den beiden Speicherblöcken macht FastMM ja auch nicht? :gruebel: Versuch es mal mit meinem ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:44 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