![]() |
Re: Zeichen in String an Position x ersetzten
Hallo!
Schon gefunden... #0 um das Zeichen zu löschen.. trotzdem danke und liebe Grüsse Peter |
Re: Zeichen in String an Position x ersetzten
Hi Peter,
ich hätte es mit Delete(DeinString, DiePosition, 1) versucht. Kannst du mal erklären, wie du auf deine Lösung gekommen bist? marabu |
Re: Zeichen in String an Position x ersetzten
Hallo!
Ich habe es folgend gemacht: Löscht alle Zeichen, welche markiert sind ...
Delphi-Quellcode:
If (Sender as TcxDBTextEdit).SelLength > 0 then
begin A := (Sender as TcxDBTextEdit).SelStart + 1; B := A + (Sender as TcxDBTextEdit).SelLength - 1; While A < B do begin Text[A] := #0; A := A + 1; end; end; Liebe Grüsse Peter [edit=Sharky]Und noch einmal die Delphi-Tags gesetzt. Mfg, Sharky[/edit] |
Re: Zeichen in String an Position x ersetzten
Hi Peter,
ich habe gerade meinen Beißring verlegt - machen wir es deshalb kurz: #0 ist selbst ein Zeichen. Bei short strings darf es im string vorkommen, bei long strings ist es das terminierende Zeichen. In deinem Fall würde ich dir folgendes vorschlagen:
Delphi-Quellcode:
Freundliche Grüße vom marabu
with Sender as TcxDBTextEdit do
SelText := ''; |
Re: Zeichen in String an Position x ersetzten
Zitat:
Shortstrings haben eine feste Länge, da darf #0 vorkommen, obwohl es das Stringendezeichen ist. Bei AnsiStrings darf #0 auch vorkommen, deren Länge wird vor dem String im Speicher abgelegt. Bei null terminierenden Strings (PChar) beendet das #0 Zeichen den String. @marabu: Wenn du mit long strings AnsiStrings meinst, ist deine Aussage falsch. Wenn du damit aber null terminierende Strings meist, stimmt die Aussage wieder. |
Re: Zeichen in String an Position x ersetzten
Hi du!
da hatte ich nochmals Glück wegen deines beißringes ;-) Danke für den Tipp! Werde es gleich korrigieren! Liebe Grüsse Peter |
Re: Zeichen in String an Position x ersetzten
Luckie,
mit long string meine ich wirklich AnsiString. Beim längen-gezählten AnsiString wird zwar das #0 Zeichen anstandslos mitgezählt, kopiert, etc., aber sobald eine der vielen internen automatischen Wandlungen nach PChar statt findet - AUTSCH. Schau mal hier:
Delphi-Quellcode:
Deswegen sollte man solange keine null chars in einer string Variablen mitführen, bis man genau weiß was man da tut.
var
s: AnsiString; begin s := 'Bisweilen geh ich im Walde so für mich hin, nach schmackhaften Pilzen steht mir der Sinn'; s[43] := #0; ShowMessage(Format('Der String "%s" hat die Länge %d', [s, Length(s)])); end; Freundliche Grüße vom marabu |
Re: Zeichen in String an Position x ersetzten
Zitat:
Manchaml ist es ganz schön schwer eine vermeindlich einfache Frage richtig und umfassend zu beantworten. :-? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 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