AGB  ·  Datenschutz  ·  Impressum  







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

pChar nach string konvertieren ?

Ein Thema von Andy386 · begonnen am 15. Mai 2008 · letzter Beitrag vom 16. Mai 2008
Antwort Antwort
Seite 1 von 3  1 23      
Andy386

Registriert seit: 26. Mär 2008
55 Beiträge
 
#1

pChar nach string konvertieren ?

  Alt 15. Mai 2008, 15:10
Also, ich hab ein bissl gegoogelt, ein bissl Forumsuche gemacht, aber nix gefunden.
Alles dreht sich immer darum, einen string zu einem pchar zu machen. Die verschiedenen Methoden kenne ich jetzt.
Aber wie geht es anders herum ?
Hier ein paar verzweifelte Versuche:
Delphi-Quellcode:
var pstr: pchar;
    sstr: shortstring;
    delphi_helper: Integer;
    str:string;
Delphi-Quellcode:
// str:=pstr; -> Absturz
// strcopy(str,pstr); -> incompatible types


          for delphi_helper:=1 to ord(pstr[0]) do //füllt meist nur das erste Element ?!
                      sstr[delphi_helper]:=pstr[delphi_helper];

          no:=;
          delete(sstr,pos('#',sstr),10000); //ab und an sieht mein string so aus: '123'#A#...#...#...
          str:=String(sstr); //währe ja sowieso zu einfach
PS: str:=(string)pstr; bringt auch einen Absturz.


Der pchar kommt aus einer dll, zu der ich maximal die "Zugriffs"-Pascal-Datei ändern kann - habe dort aus pchar shortstring gemacht, kommt aber auch nur ein Absturz.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: pChar nach string konvertieren ?

  Alt 15. Mai 2008, 15:14
Du kannst nicht einfach die Deklaration der Funktionen ändern!
Eigentlich bist du schon ganz nahe dran. Anscheinend hast du aber noch den C-Cast-Style im Kopf. In Pascal musst du schreiben str := string(pstr);
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#3

Re: pChar nach string konvertieren ?

  Alt 15. Mai 2008, 15:15
Delphi-Quellcode:
var
  p: Pchar;
  s: String;


begin
p := 'test'
s := p;
so einfach

delete(sstr,pos('#',sstr),10000); //ab und an sieht mein string so aus: '123'#A#...#...#... das bei der anzeige sollte richtig sein, denn '123' ist der string # ist der hexwert wenn ich mich jetzt nicht vertuhe. also in dem String selbst ist dann keine # sondern der ascii wert der hinter der # steht (#A = ascii(10))
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#4

Re: pChar nach string konvertieren ?

  Alt 15. Mai 2008, 15:17
Delphi-Quellcode:
String(PChar)
PChar(String)
Mit DLL's musste da aufpassen, schick da nicht so viele Strings rum.
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: pChar nach string konvertieren ?

  Alt 15. Mai 2008, 15:45
du musst dir immer bewusst machen das ein PChar nur ein Pointer-Typ ist.

Folgendes solltest du zum Beispiel daher nie machen:
Delphi-Quellcode:
function Irgendwas(): PChar;
var
  meinString: String;
  meinPChar: PChar;
begin
  meinString := 'Text';
  meinPChar := PChar(meinString);
  result := meinPChar;
end;
denn zurück gegeben wird nur ein Pointer (PChar) auf meinString und meinString ist nach verlassen der Funktion nicht mehr gültig. PChar verhält sich also wie so ziemlich jeder andere Pointer und zeigt auf das erste Zeichen der Zeichenkette.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: pChar nach string konvertieren ?

  Alt 15. Mai 2008, 15:51
und noch ne Lösung:

Delphi-Quellcode:

var
  s: String;
  p: PChar;

[...]
  StrPCopy(p, 'HALLO WELT'); // Schreibt 'Hallo Welt' in den PChar p
  s := StrPas(p); // Wandelt von Pchar nach String;
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#7

Re: pChar nach string konvertieren ?

  Alt 15. Mai 2008, 15:55
Zitat von Andy386:
delete(sstr,pos('#',sstr),10000); //ab und an sieht mein string so aus: '123'#A#...#...#...
bei deinem netten ergebniss handelt es sich (ich sags auch mal) um das richtige Ergebniss. Dein #A sollte vielleicht nich gefolgt werden von einem #D und dann hat man schon einen mehrzeiligen String. Unter Windows wird eine neue Zeile mit Chr(10) und Chr(13) signalisiert. Soviel zu deinen #... Strings

rollstuhlfahrer
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Andy386

Registriert seit: 26. Mär 2008
55 Beiträge
 
#8

Re: pChar nach string konvertieren ?

  Alt 15. Mai 2008, 16:04
s:=p wirft Adressverletzung; hatte ich schon oben

s := string(p); auch

  s := StrPas(p); hatte ich noch nich, geht aber auch nich.


Hier die Wete aus dem Debug Inspector:
pstr: PAnsiChar $12F628
Wert 'wrong command'


ich bin echt gleich am Ende....
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#9

Re: pChar nach string konvertieren ?

  Alt 15. Mai 2008, 16:08
dann versuchs mal mit

S := Copy(p, 1, maxInt); rollstuhlfahrer
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#10

Re: pChar nach string konvertieren ?

  Alt 15. Mai 2008, 16:58
Zitat von Andy386:
s:=p wirft Adressverletzung; hatte ich schon oben

s := string(p); auch

  s := StrPas(p); hatte ich noch nich, geht aber auch nich.


Hier die Wete aus dem Debug Inspector:
pstr: PAnsiChar $12F628
Wert 'wrong command'


ich bin echt gleich am Ende....
Mach mal ein leeres Projekt und übernimm das Beispiel. s := p dürfte afaik keine Zugriffsverletzung werfen!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 04:01 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