AGB  ·  Datenschutz  ·  Impressum  







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

String zu PWideChar umwandeln

Ein Thema von MrKnogge · begonnen am 2. Jun 2004 · letzter Beitrag vom 2. Jun 2004
Antwort Antwort
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#1

String zu PWideChar umwandeln

  Alt 2. Jun 2004, 00:01
Moin !

Ich muss einen String in einen PWideChar umwandeln, bei
:= PWideChar(StringList1.Strings[i]); bekomme ich die Compilermeldung:
Zitat:
[Warnung] Unit1.pas(1384): Bedenkliche Typumwandlung von String in PWideChar
Wo Delphi auch recht hat, den das was letztendlich amBildschirm erscheint, ist alles andere als mein String


Ich brauche dies, um bei die Gruppennamen eines ListViews (siehe bsp. im swissdelphicenter) vom Benutzer festlegen lassen möchte.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: String zu PWideChar umwandeln

  Alt 2. Jun 2004, 00:50
Moin!

Zitat von Delphi 5 OH:
StringToWideChar konvertiert einen Pascal-String in einen UNICODE-String.

Unit

System

Kategorie

Multibyte-Zeichen

function StringToWideChar(const Source: string; Dest: PWideChar; DestSize: Integer): PWideChar;

Beschreibung

StringToWideChar wandelt den in Source übergebenen String von ANSI in Unicode um und speichert das Ergebnis in dem durch Dest und DestSize angegebenen Puffer. Der Puffer Dest enthält nach dem Aufruf höchstens DestSize - 1 Zeichen des Quell-Strings und das Wide-Zeichen NULL. StringToWideChar gibt einen Zeiger auf Dest zurück.
MfG
Muetze1
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#3

Re: String zu PWideChar umwandeln

  Alt 2. Jun 2004, 09:29
Hi,

ich hab jetzt folgendes probiert:

Delphi-Quellcode:
StringToWideChar(string1, PWideChar1, 256);

und

PWideChar1 := StringToWideChar(string1, PWideChar2, 256);
bei beiden erhalte ich folgende Fehlermeldung
Zitat:
Zugriffsverletzung bei Adresse 004050AC in Modul 'Project1.exe'. Schreiben von Adresse 00000000
Was mache ich falsch
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  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: String zu PWideChar umwandeln

  Alt 2. Jun 2004, 09:46
Wenn Du den String nur Lese-Technisch benötigst
Delphi-Quellcode:
var
  wStr: WideString;
  pwStr: PWideString;
begin
  wStr := StringList1.Strings[i]
  pwStr := PWideChar(wStr);
end;
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#5

Re: String zu PWideChar umwandeln

  Alt 2. Jun 2004, 09:55
wenn ihr typen hab wo ein P vorsteht sind das pointer.
pointer zeigen auf speicherbereicht.
wenn ihr dort kein platz schafft das wird das nix und schutzverletzungen sind an der tages ordnung.

Delphi-Quellcode:
getmem(PWideChar2, 256);
PWideChar1 := StringToWideChar(string1, PWideChar2, 256);
ach ja und bitte nicht den freemem vergesssen
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#6

Re: String zu PWideChar umwandeln

  Alt 2. Jun 2004, 09:59
Wow, Danke. Zum lesen reicht der mir alle mal.

warn nur 2 kleine Fehlerchen drinnen, kleiner Fehler

Delphi-Quellcode:
var
  wStr: WideString;
  pwStr: PWideChar; // einmal hier
begin
  wStr := StringList1.Strings[i]; // und anschliesend ein semikolon *gg
  pwStr := PWideChar(wStr);
end;
[Edit=Den Post gabs vorher noch nicht]

Zitat von generic:
wenn ihr typen hab wo ein P vorsteht sind das pointer.
pointer zeigen auf speicherbereicht.
wenn ihr dort kein platz schafft das wird das nix und schutzverletzungen sind an der tages ordnung.

Delphi-Quellcode:
getmem(PWideChar2, 256);
PWideChar1 := StringToWideChar(string1, PWideChar2, 256);
ach ja und bitte nicht den freemem vergesssen
Werd ich mal probieren, dachte nur das dies die funktion selber übernimmt, da man ja die größe für den Puffer angeben muss.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#7

Re: String zu PWideChar umwandeln

  Alt 2. Jun 2004, 10:22
Zitat von MrKnogge:
Werd ich mal probieren, dachte nur das dies die funktion selber übernimmt, da man ja die größe für den Puffer angeben muss.
Ja, die Größe des Puffers den man reserviert hat..!
Manuel Pöter
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: String zu PWideChar umwandeln

  Alt 2. Jun 2004, 11:43
Moin!

Bei GetMem() beachten, das ein PWideString pro Zeichen 2 Byte verwendet, also für einen Buffer für 256 Zeichen muss man 512 Bytes alloziieren...

MfG
Muetze1
  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 07:00 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