AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StringReplace mag nicht?

Ein Thema von knödel · begonnen am 30. Aug 2004 · letzter Beitrag vom 30. Aug 2004
Antwort Antwort
knödel

Registriert seit: 1. Aug 2004
Ort: Illertissen
29 Beiträge
 
Delphi 7 Personal
 
#1

StringReplace mag nicht?

  Alt 30. Aug 2004, 01:18
Ich glaub ich spinne?!

StringReplace will einfach nicht, dieser Code ist doch korrekt?

Code:
...
var
  blubb : string;
begin
  blubb := 'bla';
  ShowMessage(blubb); // -> gibt 'bla' aus
  StringReplace(blubb,'bla','blubb',[rfReplaceAll]);
  ShowMessage(blubb); // -> gibt 'bla' aus
...
StringReplace ändert hierbei überhaupt nichts! In beiden Meldefenstern wird immer noch 'bla' ausgegeben.
Spinnt mein Delphi oder Ich?
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#2

Re: StringReplace mag nicht?

  Alt 30. Aug 2004, 01:25
Zitat von knödel:
Ich glaub ich spinne?!

StringReplace will einfach nicht, dieser Code ist doch korrekt?

Code:
...
var
  blubb : string;
begin
  blubb := 'bla';
  ShowMessage(blubb); // -> gibt 'bla' aus
  StringReplace(blubb,'bla','blubb',[rfReplaceAll]);
  ShowMessage(blubb); // -> gibt 'bla' aus
...
StringReplace ändert hierbei überhaupt nichts! In beiden Meldefenstern wird immer noch 'bla' ausgegeben.
Spinnt mein Delphi oder Ich?
wie wärs mit:
  blubb := StringReplace(blubb,'bla','blubb',[rfReplaceAll]); stefan
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: StringReplace mag nicht?

  Alt 30. Aug 2004, 01:33
ja ja. Mal wieder die Delphi Hilfe:
Zitat:
Returns a string with occurrences of one substring replaced by another substring.
Und man könnte es sogar an der Definition erkennen:
Code:
[color=red][b]function[/b][/color] StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): [b][color=red]string[/color][/b];
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
knödel

Registriert seit: 1. Aug 2004
Ort: Illertissen
29 Beiträge
 
Delphi 7 Personal
 
#4

Re: StringReplace mag nicht?

  Alt 30. Aug 2004, 01:49
Ein Dankeschön an die Herren!

Ich habe die Funktion ja erst durch die Hilfe gefunden, nicht dass ihr denkt, ich guck da nie/nicht nach. Habe mir wohl die Pascal-Syntax noch nicht so richtig angewöhnt.

Aber Ihr werdet mir doch verzeihen? Denn ich progge erst seit ein paar Wochen Delphi.

[Nachtrag]
Achja, in meiner Hilfe ist das zwar ausführlich beschrieben, aber genau das eine fehlt:
Zitat:
Delphi-Syntax:

function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

Beschreibung

Mit StringReplace ersetzen Sie in dem angegebenen String den im Parameter OldPattern festgelegten Sub-String mit dem im Parameter NewPattern übergebenen neuen Sub-String. StringReplace nimmt an, dass der String Multibyte-Zeichen enthalten kann.

S ist der Ausgangs-String, dessen Sub-Strings geändert werden sollen.

OldPattern ist der Sub-String, der gefunden und durch NewPattern ersetzt werden soll.

NewPattern ist der Sub-String, bei dem die Vorkommen von OldPattern ersetzt werden sollen.

Flags ist eine Gruppe von Flags, die steuern, wie StringReplace die Vorkommen von OldPattern sucht und ersetzt. Wenn Flags rfReplaceAll nicht enthält, ersetzt StringReplace nur das erste Vorkommen von OldPattern in S. Andernfalls ersetzt StringReplace alle Instanzen von OldPattern durch NewPattern. Wenn der Parameter Flags rfIgnoreCase enthält, wird die Groß-/Kleinschreibung nicht berücksichtigt.
Kann man doch leicht so missverstehen?


MfG
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#5

Re: StringReplace mag nicht?

  Alt 30. Aug 2004, 02:05
Hallo knödel!

Das Problem ist, daß Delphi über eine lange Zeit entstanden ist.

Die Prozedur "Delete" war z.B. schon in der CP/M-Version von Turbo-Pascal vorhanden. Sie verändert den übergebenen Parameter.

StringReplace ist viel neuer. Bei der Einführung dieser Routine gab es schon Properties - und die lassen sich aus prinzipiellen Gründen nicht als VAR-Parameter übergeben. Deshalb wurde die Funktion gewählt.
Code:
Delete(Edit1.Text,1,1); //<-- geht nicht
Edit1.Text:=StringReplace(Edit1.Text,',','.'[rfReplaceAll]); //<-- geht
Deshalb werden jetzt VAR-Parameter möglichst vermieden - die alten Sachen werden aber nicht verändert.

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#6

Re: StringReplace mag nicht?

  Alt 30. Aug 2004, 03:01
Keine Sorge ... ich hatte auch mal das selbe Problem und dachte auch schon ich werd' irre...


Allerdings steht bei mir auchnoch folgendes ganz oben in der Hilfe, was eigentlich die Lösung enthält.
Die Funktion gibt einen String mit ersetzten Sub-Strings zurück.
Obwohl es so "Die Funktion gibt den String, mit den ersetzten Sub-Strings, als Ergebnis zurück." wohl etwas verständlicher wäre.


[etwas OT]
Tja, manchmal ist es schon gemein, wenn Delphi (oder auch anderes) nicht mekert, wenn man mal ein Funktionsergebnis in's leere laufen läßt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 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