![]() |
Delphi-Version: 6
Wie gibt man einen Substring aus?
Hallo,
wieder mal scheinbar was einfaches, wozu ich aber keine Informationen finde: Wie kann man sich einen Substring von einem String ausgeben lassen? In meinem konkreten Fall möchte ich nur die ersten beiden Elemente des Strings haben. Dankeschön. Edit: Der triviale Zugriff über die Indices ist mir schon klar, aber gibt da etwas eleganteres? |
AW: Wie gibt man einen Substring aus?
Eine einfache Möglichkeit wäre hier der Copy - Befehl.
![]() |
AW: Wie gibt man einen Substring aus?
Oder so
Delphi-Quellcode:
var
s: string; begin s := '12345'; showmessage(s.Substring(0, 2)); |
AW: Wie gibt man einen Substring aus?
Zitat:
|
AW: Wie gibt man einen Substring aus?
Zitat:
AnsiStrings bei 1 in der 0. Position ist die Länge des Strings gespeichertt. Grüße Klaus |
AW: Wie gibt man einen Substring aus?
Zitat:
|
AW: Wie gibt man einen Substring aus?
Zitat:
|
AW: Wie gibt man einen Substring aus?
Zitat:
Wegen der Dateigröße :thumb: (Grund = :wall: ) |
AW: Wie gibt man einen Substring aus?
Zitat:
![]() Allerdings arbeiten alle Methoden von System.SysUtils.TStringHelper mit 0-basierten Indizes. |
AW: Wie gibt man einen Substring aus?
Zitat:
|
AW: Wie gibt man einen Substring aus?
Allerdings fangen Strings beim String-Helper immer bei 0 an!
Das gilt nicht nur für
Delphi-Quellcode:
, sondern auch für
Substring
Delphi-Quellcode:
oder
TStringHelper.IndexOf
Delphi-Quellcode:
.
TStringHelper.Insert
|
AW: Wie gibt man einen Substring aus?
Zitat:
Delphi-Quellcode:
Ich finde das sehr gut, endlich klare, eindeutige Verhältnisse :thumb:
TStringHelper.Chars[0]
Benutze ich nur noch bei neuen Units. |
AW: Wie gibt man einen Substring aus?
Zitat:
und für die normalen Strings muß (String/UnicodeString/AnsiString) muß man aufpassen für welches System kompiliert wird. In den NextGenCompilern (iOS/Android) ist $ZEROBASEDSTRINGS standardmäßig aktiv. (kann aber in eigenen Units notfalls deaktiviert werden, aber NIEMALs komplett aus, da sonst die RTL abraucht, weil die Entwickler da blind von ausgehen es ist aus) Über den Typ bekommt ihr via
Delphi-Quellcode:
den aktuellen Startpunkt,
Low(string)
bzw.
Delphi-Quellcode:
und
Low(StringVariable)
Delphi-Quellcode:
anstatt
High(StringVariable)
Delphi-Quellcode:
1..Length(StringVariable)
oder mit
Delphi-Quellcode:
über die Chars eines Strings enumerieren.
for C in S do
Und im Nextgen fehlen auch der ShortString und AnsiString/UTF8String/... (die gibt es, für da wo die Entwickler zu faul waren es zu ändern, aber der Typ ist nicht öffentlich) und man muß dort überall z.B. mit ByteArrays und TEncoding arbeiten. (oder sich den Typ fast hackermäßig rausholen) |
AW: Wie gibt man einen Substring aus?
Zitat:
Delphi-Quellcode:
readonly ist...
Chars[]
|
AW: Wie gibt man einen Substring aus?
Jetzt explodiert die Diskussion hier mal wieder und hat absolut nichts mehr mit der ursprünglichen Frage zu tun
Wie gibt man einen Substring aus?. Der TE möchte genau das wissen. Detailwissen interessiert hier vermutlich niemanden, der auf diese Frage eine Antwort sucht. |
AW: Wie gibt man einen Substring aus?
Selbst bauen?
Falls man ReportHelper ableiten könnte, was aber nur bei den ClassHelpern geht.
Delphi-Quellcode:
So geht es, aber dir fehlen dann alle Standard-HelperFunktionen. :freak:
type
TMyStringHelper = record helper(TStringHelper) for string private procedure SetChars(Index: Integer; Value: Char); public property Chars[Index: Integer] write SetChars; end; function TMyStringHelper.SetChars(Index: Integer; Value: Char); begin Self[Index + Low(string)] := Value; end;
Delphi-Quellcode:
type
TMyStringHelper = record helper for string private function GetChars(Index: Integer): Char; procedure SetChars(Index: Integer; Value: Char); public property Chars[Index: Integer]: Char read GetChars write SetChars; end; function TMyStringHelper.GetChars(Index: Integer): Char; begin Result := Self[Index + Low(string)]; end; procedure TMyStringHelper.SetChars(Index: Integer; Value: Char); begin Self[Index + Low(string)] := Value; end; |
AW: Wie gibt man einen Substring aus?
@kagi3624
wie wäre es mit dem Klassiker:
Delphi-Quellcode:
Die Function LeftStr() ist Bestandteil der Unit StrUtils (D6, D7).
procedure TForm1.Test;
var e, s: string; begin s:='123456'; e:=LeftStr(s,2); Memo1.Lines.Add(e); end; Im Aktuellem Delphi: System.StrUtils |
AW: Wie gibt man einen Substring aus?
Tja, dem OP wird wohl echt nur der Klassiker bleiben, wenn er D6 benutzt.
Denn Stringhelper usw. gab's da noch nicht... |
AW: Wie gibt man einen Substring aus?
Zitat:
|
AW: Wie gibt man einen Substring aus?
Zitat:
![]() Vermutlich funktioniert das Vererben aber nicht bei String :cry:, aber einen Versuch wäre es Wert. |
AW: Wie gibt man einen Substring aus?
Wie in dem gleichen Thread beschrieben, geht das Vererben nur bei class helper, aber nicht bei record helper.
|
AW: Wie gibt man einen Substring aus?
Egal, das hätte ich trotzdem mal ausprobiert.
Es gibt ja noch Varianten in den Schreibweisen, ich denke halt seeeehr positiv :stupid: |
AW: Wie gibt man einen Substring aus?
Wobei es für die Helper keinen Grund gibt, warum das nicht zu vererben gehen sollte, oder warum überhaupt der Letzte immer alles andere überdeckt.
z.B. im TStringHelper und TIntegerHelper fehlt so viel, aber das kann man nicht nachrüsten, ohne ALLES neu zu machen, weil der Standardhelper dann weg ist. Für sowas wie TComponent.Name ist der String-Helper standardmäßig garnicht sichtbar, weil auch dort die Vererbung vergessen wurde und der Helper des Vorfahren "string" des TComponentName somit fehlt. |
AW: Wie gibt man einen Substring aus?
Zitat:
Schade das es noch nicht diese "Brauchbar" "Hilfreich" etc buttons hier noch nicht gibt :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:09 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 by Thomas Breitkreuz