AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit Pwidechar

Ein Thema von WS1976 · begonnen am 13. Jun 2007 · letzter Beitrag vom 13. Jun 2007
Antwort Antwort
WS1976
(Gast)

n/a Beiträge
 
#1

Problem mit Pwidechar

  Alt 13. Jun 2007, 08:02
Hallo,
ich sitz im Moment auf der Leitung:

Was ist daran falsch?
Delphi-Quellcode:
var a:string;
......
  a:=edit1.Text;
  ListSharedFolders(pwidechar(a));
der Übergabeparameter von ListSharedFolders ist vom Typ Pwidechar.
Der Compiler nimmt das klaglos entgegen. Die Funktion kann damit aber nichts anfangen.

Gruss Rainer
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit Pwidechar

  Alt 13. Jun 2007, 08:35
Ich bin mir nicht ganz sicher, ob der Cast von String zu Widechar direkt funktioniert. Probier mal
pwidechar(WideString(a)); Ich weiß, dass die Umwandlung PChar(aWideString) nicht richtig läuft - da muss erst nach String zwischengecastet werden. Wahrscheinlich ist es hier auch so.
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#3

Re: Problem mit Pwidechar

  Alt 13. Jun 2007, 08:42
Hallo,

danke für deinen Tip. Funktioniert einwandfrei.

Gruss Rainer
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Problem mit Pwidechar

  Alt 13. Jun 2007, 11:30
Zitat von Gausi:
Ich weiß, dass die Umwandlung PChar(aWideString) nicht richtig läuft - da muss erst nach String zwischengecastet werden. Wahrscheinlich ist es hier auch so.
Sorry. Wie kommst du darauf. Ich hab unter D6 eine große Unicode-Enabled Anwendung und hab mit Widestrings nur probleme beim Zusammenbauen in der IDE bzw. wenn ich Wert aus (Ole)Variants bekomme.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: Problem mit Pwidechar

  Alt 13. Jun 2007, 12:14
Erst mal der Typecast ist definitiv falsch. Es soll ja ein Unicodestring uebergeben werden und der will erst mal erzeugt sein.
Delphi-Quellcode:
var
  WS: WideString;
begin
  WS := Edit1.Text; // hier findet die Unicode-Umwandlung statt
  ListSharedFolders(PWideChar(WS)); // das ist nur eine Umtypung
Grundsaetzlich ist es so das weder PWideChar() noch PChar() eine Wandlung des Strings vornehmen.
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Problem mit Pwidechar

  Alt 13. Jun 2007, 12:30
Ich habe das immer so gemacht
Delphi-Quellcode:
var
  s: string;
begin
  s := 'hey man!';
  MessageBoxW(0, PWideChar(WideString(s)), 'x', 0);
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Problem mit Pwidechar

  Alt 13. Jun 2007, 12:34
Eine Anweisung wie PChar(aWideString) geht zwar, liefert aber eine Compiler-Warnung "bedenkliche Typumwandlung". Resultat einer solchen Anweisung ist meistens, dass nur das erste Zeichen ankommt, da das zweite Byte in einem WideString in aller Regel #0 ist (wenn man unsere Zeichen so verwendet).
Wenn man einen String direkt nach PWideChar castet, kommt meistens asiatisches Zeug bei raus:
Delphi-Quellcode:
var s: String;
begin
   s := 'Hallo Welt';
   WideShowMessage(PWideChar(s)); // WideShowMessage aus den TNT-Unicode-Controls
end;
liefert eine Meldung wie im Anhang. Deine Funktion läuft also wahrscheinlich durch, findet aber keine Ordner mit so einem Namen.

Und ob man nun Edit1.Text zuerst in einen WideString packt, oder in einer Zeile doppelt castet, dürfte egal sein.
Miniaturansicht angehängter Grafiken
aufzeichnen_162.jpg  
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: Problem mit Pwidechar

  Alt 13. Jun 2007, 12:34
Hallo,

PWideChar(WideString(<AnsiString>)) ist schon richtig. Durch den Typecast auf WideString wird die Funktion WStrFromLStr aufgerufen, die aus einem AnsiString einen WideString generiert. Also tatsächlich eine Umwandlung und nicht nur eine andere Interpretation der Daten.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  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 20:56 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