![]() |
Implizite String-Umwandlung von 'ShortString' zu 'String'
Hey,
ich habe ein kleines Problem (geht nur um eine Warnung, möchte aber sicher gehn, wie ich diese wegbekomme und auch, was sie wirklich bedeutet)
Delphi-Quellcode:
Ich habe einen String mit fester Länge (String[6]) gewählt, weil dieser in einem Record enthalten ist, welches in eine typisierte Datei gespeichert werden soll. Da ich aber schon etliche Funktionen habe, die im Parameter einen String haben und nicht einen ShortString, habe ich beim Umstellen einige dieser Warnungen.
type
TTest=record id: String[6]; end; function MachWasMitID(id:String); begin //iwas mit der ID machen end; Meine Frage ist nun: Wie bekomme ich diese weg? Und hat das irgendwelche Folgen? Danke! |
AW: Implizite String-Umwandlung von 'ShortString' zu 'String'
Dein
Delphi-Quellcode:
kann (im Gegensatz zum "einfachen"
string[6]
Delphi-Quellcode:
) nur ANSI-Zeichen aufnehmen, keine Unicode-Zeichen. Wenn das kein Problem für dich ist, kannst du die Warnung einfach wegcasten.
string
Delphi-Quellcode:
sollte dann reichen.
MachWasMitID(string(test.ID));
|
AW: Implizite String-Umwandlung von 'ShortString' zu 'String'
Dein String[6] ist immer ein Ansistring.
|
AW: Implizite String-Umwandlung von 'ShortString' zu 'String'
Zitat:
Delphi-Quellcode:
; oder
mystring[0]:=#0
Delphi-Quellcode:
sollte es klappen.
for i:=1 to Byte(Mystring[0]) do.....
Ich hab mir angewöhnt,
Delphi-Quellcode:
nur noch da zu verwenden, wo es egal ist ob ANSI, UTF8, Wide oder was auch immer. Alle Anderen Strings sind explizit Typisiert.
string
Gruß K-H |
AW: Implizite String-Umwandlung von 'ShortString' zu 'String'
Mit den erweiterten Möglichkeiten von Records kann man das ganz elegant wegdeklarieren, so daß die unsauberen Casts nur an einer Stelle vorkommen:
Delphi-Quellcode:
type
TTest = record private type Str6 = String[6]; var Fid: Str6; function GetId: string; procedure SetId(const Value: string); public property Id: string read GetId write SetId; end; function TTest.GetId: string; begin Result := string(FId); end; procedure TTest.SetId(const Value: string); begin FId := Str6(Copy(Value, 1, 6)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 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