Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeichen in String an Position x ersetzten (https://www.delphipraxis.net/15311-zeichen-string-position-x-ersetzten.html)

fcg 26. Jan 2004 12:38


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

fkerber 26. Jan 2004 12:42

Re: Zeichen in String an Position x ersetzten
 
Hi!

Wenn ich nicht irre so:

Delphi-Quellcode:
var
str: string;

begin

str:='Test';
str[2]:='a';
end;
Müsste eigentlich jetzt Teat sein.

(Untested)

Ciao fkerber

Dax 26. Jan 2004 12:43

Re: Zeichen in String an Position x ersetzten
 
Wir nehmen an, du hast einen string:
Delphi-Quellcode:
var s: string;
Diesem String gibst du eien wert:
Delphi-Quellcode:
s := 'was weiss ich';
Du willst ein Zeichen an Position x ersetzen (wir benutzen x = 4):
Delphi-Quellcode:
s[x{oder 4}] := {Anderes zeichen}'Ä';

fcg 26. Jan 2004 12:55

Re: Zeichen in String an Position x ersetzten
 
yo danke.. Habe das mit Labels verwechselt, wo das so nit funzt...

fcg

Neg 26. Jan 2004 20:47

Re: Zeichen in String an Position x ersetzten
 
Zitat:

Zitat von fkerber
Hi!

Wenn ich nicht irre so:

Delphi-Quellcode:
var
str: string;

begin

str:='Test';
str[2]:='a';
end;
Müsste eigentlich jetzt Teat sein.

Nein, str ist jetzt gleich "Tast". Strings beginnen mit 1, nicht mit 0.

@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]

fkerber 26. Jan 2004 21:56

Re: Zeichen in String an Position x ersetzten
 
:oops:
Sorry, mein Fehler.
Tja Theorie und Praxis.

Ciao fkerber

Synonym 26. Jan 2004 21:59

Re: Zeichen in String an Position x ersetzten
 
@neg wieso hast du das

Zitat:

[edit]Verdammte Typos...[/edit]
so klein geschrieben?

synonym

Neg 26. Jan 2004 23:27

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:

TPeterT 19. Sep 2005 07:43

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]

marabu 19. Sep 2005 07:49

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

TPeterT 19. Sep 2005 07:51

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

marabu 19. Sep 2005 07:57

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

TPeterT 19. Sep 2005 08:02

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]

marabu 19. Sep 2005 08:08

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:
with Sender as TcxDBTextEdit do
  SelText := '';
Freundliche Grüße vom marabu

Luckie 19. Sep 2005 08:13

Re: Zeichen in String an Position x ersetzten
 
Zitat:

Zitat von marabu
#0 ist selbst ein Zeichen. Bei short strings darf es im string vorkommen, bei long strings ist es das terminierende Zeichen.

:gruebel:
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.

TPeterT 19. Sep 2005 08:15

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

marabu 19. Sep 2005 08:34

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:
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;
Deswegen sollte man solange keine null chars in einer string Variablen mitführen, bis man genau weiß was man da tut.

Freundliche Grüße vom marabu

Luckie 19. Sep 2005 08:39

Re: Zeichen in String an Position x ersetzten
 
Zitat:

Zitat von marabu
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.

Jupp.

Manchaml ist es ganz schön schwer eine vermeindlich einfache Frage richtig und umfassend zu beantworten. :-?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz