![]() |
Zeichen in String an Position x ersetzten
Wie kann ich das machen? Ich möchte an Position x ein Zeichen in einem String ersetzen...
thÄnxX fcg |
Re: Zeichen in String an Position x ersetzten
Hi!
Wenn ich nicht irre so:
Delphi-Quellcode:
Müsste eigentlich jetzt Teat sein.
var
str: string; begin str:='Test'; str[2]:='a'; end; (Untested) Ciao fkerber |
Re: Zeichen in String an Position x ersetzten
Wir nehmen an, du hast einen string:
Delphi-Quellcode:
Diesem String gibst du eien wert:
var s: string;
Delphi-Quellcode:
Du willst ein Zeichen an Position x ersetzen (wir benutzen x = 4):
s := 'was weiss ich';
Delphi-Quellcode:
s[x{oder 4}] := {Anderes zeichen}'Ä';
|
Re: Zeichen in String an Position x ersetzten
yo danke.. Habe das mit Labels verwechselt, wo das so nit funzt...
fcg |
Re: Zeichen in String an Position x ersetzten
Zitat:
@fcg: Nur ein kleiner Hinweis (, falls du es noch nicht weißt): Wenn du die einzelnen Buchstaben eines Strings direkt ansprichst, dann gehe immer sicher, dass der entsprechende Buchstabe auch existiert, der String also nicht kleiner ist, sonst kriegst du eine AV. [edit]Verdammte Typos...[/edit] |
Re: Zeichen in String an Position x ersetzten
:oops:
Sorry, mein Fehler. Tja Theorie und Praxis. Ciao fkerber |
Re: Zeichen in String an Position x ersetzten
@neg wieso hast du das
Zitat:
synonym |
Re: Zeichen in String an Position x ersetzten
Naja, muss ja nicht jeder mitkriegen, dass ich meinen Post editieren musste, weil ich einen Rechtschreibfehler korrigiert habe, oder? :mrgreen:
|
Re: Zeichen in String an Position x ersetzten
Delphi-Quellcode:
var
str: string; begin str:='Test'; str[2]:='a'; end; Und wie könnte ich das Zeichen an dieser Stelle löschen? #8 geht nicht... Liebe Grüsse Peter [edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit] |
Re: Zeichen in String an Position x ersetzten
Hi Peter,
bei einem so alten thread hättest du einen neuen aufmachen dürfen. Zu den Funktionen zur string Manipulation gehören Insert() und Delete(). Schau mal in die Delphi Online-Hilfe. Grüße vom marabu |
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 22:41 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