Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   W 1057 Implizite String-Umwandlung Ansistring zu string (https://www.delphipraxis.net/159538-w-1057-implizite-string-umwandlung-ansistring-zu-string.html)

himitsu 4. Apr 2011 07:34

AW: W 1057 Implizite String-Umwandlung Ansistring zu string
 
Schlimm ist, es gibt noch andere Strg+O+...-Kombinationen.
Wer läßt ich sowas denn einfallen? :wall:

ChrisE 4. Apr 2011 07:42

AW: W 1057 Implizite String-Umwandlung Ansistring zu string
 
Zitat:

Zitat von himitsu (Beitrag 1092851)
Schlimm ist, es gibt noch andere Strg+O+...-Kombinationen.

Gibt es irgendwo eine Referenz/Verzeichnis von solchen Tastenkombinationen?

Gruß, Chris

himitsu 4. Apr 2011 08:01

AW: W 1057 Implizite String-Umwandlung Ansistring zu string
 
eine Vollständige hatte ich noch nicht gesehn, genauso wie es nirgendwo eine
vollständige Liste aller Compilerschalter gibt.

Bei Google suchendelphi ide shortcuts

xnLucas 15. Mai 2011 11:37

AW: W 1057 Implizite String-Umwandlung Ansistring zu string
 
Umwandlung - Ansistring in String;
Zitat:


function asString(value: Ansistring): String;
var
i,l: integer;
begin
l:=length(value);
setlength(result,l);
for i := 1 to l do result[i]:=char(value[i]);
end;

Die Funktion funktioniert tadellos und ist genau das Gegenstück zu der
Function ansistring(value: string): ansistring;

Performancemässig bin ich mit dieder Function nicht zufrieden.
Kann mir die evtl. einer in assembler umschreiben?

zu Info die
function string(value: ansistring): String
liefert nicht das gleiche Ergebnis

himitsu 15. Mai 2011 12:04

AW: W 1057 Implizite String-Umwandlung Ansistring zu string
 
Delphi-Quellcode:
// explizite Umwandlung
function asString(value: AnsiString): String;
begin
  Result := String(value);
end;

// implizite Umwandlung
function asString(value: AnsiString): String;
begin
  Result := value;
end;
Und
Delphi-Quellcode:
string
isr keine Funktion, sondern ein Type-Cast (Typumwandlung).
Und natürlich liefert sie nicht unbedingt das gleiche Ergebnis, da sie die Codierung des AnsiString berücksichtig.

MSDN-Library durchsuchenMultiByteToWideChar und zu noch die gewünschte CodePage.
PS: Die obrigen Type-Casts nutzen dieses auch, nur eben mit CP_ACP als Codepage.

xnLucas 15. Mai 2011 13:16

AW: W 1057 Implizite String-Umwandlung Ansistring zu string
 
Hallo himitsu,

vielen Dank für den Hinweis, ich hab es es jetzt folgendermaßen gelöst.:-D

Code:
function asString(value: Ansistring): String;
var
    len : integer;
begin
    len:=length(value);
    SetLength(Result, len );
    if len > 0
     then MultiByteToWideChar(Cp_ACP, MB_PRECOMPOSED,
      PansiChar(@value[1]), len , PWideChar(@Result[1]), len);
end;

himitsu 15. Mai 2011 14:39

AW: W 1057 Implizite String-Umwandlung Ansistring zu string
 
man kann's auch noch etwas kürzen
Delphi-Quellcode:
PAnsiChar(value), len , PWideChar(Result), len);


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:00 Uhr.
Seite 2 von 2     12   

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