Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ReplaceStr Schwierigkeiten (https://www.delphipraxis.net/186544-replacestr-schwierigkeiten.html)

LingNeu 10. Sep 2015 09:22

ReplaceStr Schwierigkeiten
 
Hallo zusammen,
habe mit der Funktion ReplaceStr() Probleme in einer zweiten Unit.
Dort benötige ich diese Funktion und da kommt aber die Meldung "Undefinierter Bezeichner ReplaceStr"
Ich habe in der uses ...
Windows, Messages, SysUtils, StrUtils ,Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls ...
eingebunden.
Kann mir bitte jemand sagen, was ich noch einbinden muss, damit ich diese Funktion verwenden kann.
Im Google habe ich leider keinen Hinweis gefunden.
Danke!
Gruss
LingNeu

Sir Rufo 10. Sep 2015 09:27

AW: ReplaceStr Schwierigkeiten
 
Bei Google suchendelphi docwiki replacestr oder Delphi-Referenz durchsuchenReplaceStr

Es kann aber auch sein, dass es diese Funktion unter Delphi 7 noch nicht gab.

Na dann erstellt man sich so eine und sammelt diese und ähnliche in einer
Delphi-Quellcode:
unit StrUtilsEx;

Luckie 10. Sep 2015 09:28

AW: ReplaceStr Schwierigkeiten
 
Sollte eigentlich in System.StrUtils enthalten sein. Zeig mal deinen Code.

Neutral General 10. Sep 2015 09:36

AW: ReplaceStr Schwierigkeiten
 
Gibt es ReplaceStr überhaupt?
Normalerweise ist es doch StringReplace oder nicht?

Oder sind das 2 verschiedene (gleiche) Funktionen?

LingNeu 10. Sep 2015 09:38

AW: ReplaceStr Schwierigkeiten
 
@sir rufo,
danke für die seiten, diese hatte ich auch schon im visier, aber da steht auch nur die strutils drin, diese habe ich aber in der uses
wenn ich die funktion in meine hauptform (unit1) reinmache nimmt delphi diese an, aber nicht in der FunctionUnit, welche ich als funktionenpool verwende.

@luckie
diese funktion brauche in in einer Umwandlungsfunktion

Delphi-Quellcode:
unit functions;

interface
uses
  Windows, Messages, SysUtils, StrUtils ,Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, SUIButton, Mask, SUIEdit, SUIMemo, SUIImagePanel ;

function convert(astring: Ansistring): string;
var
  tmp: string;
  i: integer;
begin
  tmp := UpperCase(astring);

  tmp := ReplaceStr(tmp,'ä','AE');
  tmp := ReplaceStr(tmp,'ö','OE');
  tmp := ReplaceStr(tmp,'ü','UE');
  tmp := ReplaceStr(tmp,'ß','SS');
  //alle nicht Buchastaben löschen
  for i := length(tmp) downto 1 do
  begin
    if (tmp[i]<'A') or (tmp[i]>'Z') then
      delete(tmp,i,1);
  end;
  result := tmp;
end;
danke für jeden Hinweis!
Lingneu

Luckie 10. Sep 2015 09:40

AW: ReplaceStr Schwierigkeiten
 
Ich habe bei Google auf die Schnelle hier gefunden: https://www.google.de/search?q=delph...hi+ReplaceStr+

Aber jetzt, wo du es sagst.... :roll:

implementation 10. Sep 2015 09:41

AW: ReplaceStr Schwierigkeiten
 
Da fehlt so ein schönes Schlüsselwort, nach dem ich benannt bin. Einfach zwischen die uses-Klausel und die Funktion stecken. Und hinterher die Funktion am Besten nochmal im interface-Teil erwähnen (dort nur erwähnen, nicht implementieren!).

Edit: Nur um mich klarer auszudrücken:
Delphi-Quellcode:
uses ...;

function convert(astring: Ansistring): string; // damit du in der ersten Unit drauf zugreifen kannst

implementation // <-- der springende Punkt

function convert(astring: Ansistring): string;
var
   ...

haentschman 10. Sep 2015 09:53

AW: ReplaceStr Schwierigkeiten
 
Hallöle...
Zitat:

Gibt es ReplaceStr überhaupt?
Normalerweise ist es doch StringReplace oder nicht?

Oder sind das 2 verschiedene (gleiche) Funktionen?
es gibt beide. Zitat DocWiki:
Zitat:

ReplaceStr ist dieselbe Funktion wie AnsiReplaceStr.

Die Funktion StringReplace ist eine eher allgemeine Ersetzungsroutine mit der Option zur Berücksichtigung der Groß-/Kleinschreibung und der Möglichkeit, zu entscheiden, ob alle oder nur das erste Vorkommen des Teilstrings in dem String ersetzt werden soll.

LingNeu 10. Sep 2015 10:04

AW: ReplaceStr Schwierigkeiten
 
@implementation
danke für den Hinweis, aber das habe ich auch gemacht, nur nicht im vorherigen Beispielcode angegeben


Delphi-Quellcode:
 
unit functions;

interface
uses
  Windows, Messages, SysUtils, StrUtils ,Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, SUIButton, Mask, SUIEdit, SUIMemo, SUIImagePanel;
 
  function RightStr(Const Str: String; Size: Word): String;
  function MidStr(Const Str: String; From, Size: Word): String;
  function LeftStr(Const Str: String; Size: Word): String;
  function textumbau(text1: string; text2: string; variation: integer): string;
  function strtonum(wert:string;istfloat:boolean):double;
  function DigitSum(i : Integer): Integer;
  function convert(astring: AnsiString): string;

implementation

function convert(astring: Ansistring): string;
var
  tmp: string;
  i: integer;
begin
  tmp := UpperCase(astring);

  tmp := ReplaceStr(tmp,'ä','AE');
  tmp := ReplaceStr(tmp,'ö','OE');
  tmp := ReplaceStr(tmp,'ü','UE');
  tmp := ReplaceStr(tmp,'ß','SS');
  //alle nicht Buchastaben löschen
  for i := length(tmp) downto 1 do
  begin
    if (tmp[i]<'A') or (tmp[i]>'Z') then
      delete(tmp,i,1);
  end;
  result := tmp;
end;
LingNeu

nahpets 10. Sep 2015 10:32

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von LingNeu (Beitrag 1315426)
Delphi-Quellcode:
 unit functions;

interface
uses
  Windows, Messages, SysUtils, StrUtils ,Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, SUIButton, Mask, SUIEdit, SUIMemo, SUIImagePanel;
 
  function RightStr(Const Str: String; Size: Word): String;
  function MidStr(Const Str: String; From, Size: Word): String;
  function LeftStr(Const Str: String; Size: Word): String;
  function textumbau(text1: string; text2: string; variation: integer): string;
  function strtonum(wert:string;istfloat:boolean):double;
  function DigitSum(i : Integer): Integer;
  function convert(astring: AnsiString): string;

implementation

function convert(astring: Ansistring): string;
var
  tmp: string;
  i: integer;
begin
  tmp := UpperCase(astring);

  tmp := ReplaceStr(tmp,'ä','AE');
  tmp := ReplaceStr(tmp,'ö','OE');
  tmp := ReplaceStr(tmp,'ü','UE');
  tmp := ReplaceStr(tmp,'ß','SS');
  //alle nicht Buchastaben löschen
  for i := length(tmp) downto 1 do
  begin
    if (tmp[i]<'A') or (tmp[i]>'Z') then
      delete(tmp,i,1);
  end;
  result := tmp;
end;
LingNeu

Da Du mit AnsiStrings arbeitest, nutze doch auch die entsprechenden Funktionen aus der StrUtils.

Vorschlag:
Delphi-Quellcode:
function convert(astring: Ansistring): string;
var
  tmp: string;
  i: integer;
begin
  // Wandelt auch die Umlaute um!
  tmp := AnsiUpperCase(astring);
  tmp := AnsiReplaceStr(tmp,'Ä','AE');
  tmp := AnsiReplaceStr(tmp,'Ö','OE');
  tmp := AnsiReplaceStr(tmp,'Ü','UE');
  tmp := AnsiReplaceStr(tmp,'ß','SS');
  // alle? nicht Buchstaben löschen
  // Á, È, ... gehen auch verloren!
  for i := length(tmp) downto 1 do
  begin
    if (tmp[i]<'A') or (tmp[i]>'Z') then
      delete(tmp,i,1);
  end;
  result := tmp;
end;

himitsu 10. Sep 2015 10:37

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von Neutral General (Beitrag 1315414)
Gibt es ReplaceStr überhaupt?
Normalerweise ist es doch StringReplace oder nicht?

Oder sind das 2 verschiedene (gleiche) Funktionen?

ReplaceStr und ReplaceText rufen intern StringReplace auf, mit rfReplaceAll und eventuell auch rfIgnoreCase.

Gibt inzwischen auch noch DeinString.Replace, welches ebenfalls sowas macht.

Sir Rufo 10. Sep 2015 10:41

AW: ReplaceStr Schwierigkeiten
 
Einige Vorschläge sind ja ganz nett, aber sprechen wir hier nicht von Delphi 7? :gruebel:

bcvs 10. Sep 2015 12:05

AW: ReplaceStr Schwierigkeiten
 
Das erklärt natürlich einiges.

In Delphi7 gab es ReplaceStr noch nicht.

AnsiReplaceStr gab es aber schon. Also diese Funktion verwenden (ist ja eh ein Ansistring) und alles ist gut.

LingNeu 10. Sep 2015 12:52

AW: ReplaceStr Schwierigkeiten
 
@bcvs
ich hab Delphi 7.01 Enterprise
und ich kann ReplaceStr() in meiner Hauptform aufrufen!?
Nun kenn sich einer aus.

Am Besten ich verwende mal versuchsweise AnsiReplaceStr()

Besten Dank an Euch
LingNeu

nahpets 10. Sep 2015 12:58

AW: ReplaceStr Schwierigkeiten
 
Sofern Du die JVCL nutzen solltest, klappt das auch unter Delphi 7 mit ReplaceStr. Die JVCL hat eine passende Funktion in der JvStrUtils.

Aber für so Aufgaben, wie Du sie hier erledigen musst, nutze ich immer die Ansi...-Funktionen aus der StrUtils.
Ein paar der Ansi...-Funktionen sind auch in der SysUtils enthalten.

Zoot 10. Sep 2015 13:31

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von bcvs (Beitrag 1315449)
Das erklärt natürlich einiges.

In Delphi7 gab es ReplaceStr noch nicht.

AnsiReplaceStr gab es aber schon. Also diese Funktion verwenden (ist ja eh ein Ansistring) und alles ist gut.


Doch, gab es, in der Unit StrUtils. Direkte Weiterleitung zu AnsiReplaceStr.
Funktioniert bei mir auch einwandfrei.

nahpets 10. Sep 2015 13:48

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von Zoot (Beitrag 1315468)
Zitat:

Zitat von bcvs (Beitrag 1315449)
Das erklärt natürlich einiges.

In Delphi7 gab es ReplaceStr noch nicht.

AnsiReplaceStr gab es aber schon. Also diese Funktion verwenden (ist ja eh ein Ansistring) und alles ist gut.


Doch, gab es, in der Unit StrUtils. Direkte Weiterleitung zu AnsiReplaceStr.
Funktioniert bei mir auch einwandfrei.

Nö, stimmt nicht, bei meinem Delphi 7 gibt es kein ReplaceStr und auch keine Weiterleitung nach AnsiReplaceStr.
(Gerade extra noch mal die Quelltexte von Delphi 7 danach durchforstet.)
Gibt es da eventuell Unterschiede zwischen den einzelnen Versionen von Delphi 7?

stahli 10. Sep 2015 13:54

AW: ReplaceStr Schwierigkeiten
 
D7 Prof in SysUtils:

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


EDIT: Oh, war wohl gar nicht danach gefragt... :oops:

Sir Rufo 10. Sep 2015 13:56

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von LingNeu (Beitrag 1315455)
@bcvs
ich hab Delphi 7.01 Enterprise
und ich kann ReplaceStr() in meiner Hauptform aufrufen!?
Nun kenn sich einer aus.

Na wenn das so ist, dann sollte ein beherzter STRG+LinksKlick auf dieses besagte
Delphi-Quellcode:
ReplaceStr
dich genau in die Unit befördern, wo dieses definiert ist.

Schon weißt du, welche Unit du verwenden musst.

nahpets 10. Sep 2015 14:00

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von stahli (Beitrag 1315472)
D7 Prof in SysUtils:

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


EDIT: Oh, war wohl gar nicht danach gefragt... :oops:

Ja stimmt, wird von AnsiReplaceStr aus der StrUtils auch genutzt.

Aber ReplaceStr gibts nicht ;-)
[ooh]hat sich durch Nachtrag erledigt[/ooh]

Strg+LinksKlick führen zu keinem Ergebnis. Rechtsklick und Deklaration suchen auch nicht.

Sir Rufo 10. Sep 2015 14:04

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von nahpets (Beitrag 1315474)
Strg+LinksKlick führen zu keinem Ergebnis. Rechtsklick und Deklaration suchen auch nicht.

Wenn das bei dir nicht gefunden wird (die passende Unit fehlt), wie soll er denn dann zu der Definition springen, die er nicht kennt, weil ... :roll:

Das hilft nur dort, wo etwas gefunden wird, ich aber nicht weiß, aus welcher Unit es kommt.

nahpets 10. Sep 2015 14:07

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von Sir Rufo (Beitrag 1315475)
Zitat:

Zitat von nahpets (Beitrag 1315474)
Strg+LinksKlick führen zu keinem Ergebnis. Rechtsklick und Deklaration suchen auch nicht.

Wenn das bei dir nicht gefunden wird (die passende Unit fehlt), wie soll er denn dann zu der Definition springen, die er nicht kennt, weil ... :roll:

Das hilft nur dort, wo etwas gefunden wird, ich aber nicht weiß, aus welcher Unit es kommt.

In Delphi 7 kommt es nicht vor, in keiner Unit, daher jegliche Suche erfolglos.

Sir Rufo 10. Sep 2015 14:11

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von nahpets (Beitrag 1315477)
Zitat:

Zitat von Sir Rufo (Beitrag 1315475)
Zitat:

Zitat von nahpets (Beitrag 1315474)
Strg+LinksKlick führen zu keinem Ergebnis. Rechtsklick und Deklaration suchen auch nicht.

Wenn das bei dir nicht gefunden wird (die passende Unit fehlt), wie soll er denn dann zu der Definition springen, die er nicht kennt, weil ... :roll:

Das hilft nur dort, wo etwas gefunden wird, ich aber nicht weiß, aus welcher Unit es kommt.

In Delphi 7 kommt es nicht vor, in keiner Unit, daher jegliche Suche erfolglos.

Bei deinem Delphi mag das so sein, ist in diesem Thread aber ohne Bedeutung, denn
Zitat:

Zitat von LingNeu (Beitrag 1315455)
ich hab Delphi 7.01 Enterprise und ich kann ReplaceStr() in meiner Hauptform aufrufen!?

Man mag es kaum glauben, aber ich habe davon gehört, dass man sogenannte Units einbinden kann, wo z.B. auch so eine Funktion enthalten ist, und diese Units kamen nicht mit Delphi 7 sondern wurden zusätzlich von woher auch immer beschafft.

Zoot 10. Sep 2015 14:54

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von nahpets (Beitrag 1315471)
Zitat:

Zitat von Zoot (Beitrag 1315468)
Zitat:

Zitat von bcvs (Beitrag 1315449)
Das erklärt natürlich einiges.

In Delphi7 gab es ReplaceStr noch nicht.

AnsiReplaceStr gab es aber schon. Also diese Funktion verwenden (ist ja eh ein Ansistring) und alles ist gut.


Doch, gab es, in der Unit StrUtils. Direkte Weiterleitung zu AnsiReplaceStr.
Funktioniert bei mir auch einwandfrei.

Nö, stimmt nicht, bei meinem Delphi 7 gibt es kein ReplaceStr und auch keine Weiterleitung nach AnsiReplaceStr.
(Gerade extra noch mal die Quelltexte von Delphi 7 danach durchforstet.)
Gibt es da eventuell Unterschiede zwischen den einzelnen Versionen von Delphi 7?



Du hast natürlich recht. Habe Delphi 7 mit Delphi 2007 verwechselt. :oops:

nahpets 10. Sep 2015 15:11

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von Sir Rufo (Beitrag 1315478)
Man mag es kaum glauben, aber ich habe davon gehört, dass man sogenannte Units einbinden kann, wo z.B. auch so eine Funktion enthalten ist, und diese Units kamen nicht mit Delphi 7 sondern wurden zusätzlich von woher auch immer beschafft.

Oooooh, das ist mir ja jetzt sowas von neu, deshalb hatte ich ja auch weiter oben schon auf diese Möglichkeit und eine entsprechende Unit hingewiesen ;-)

LingNeu 10. Sep 2015 17:06

AW: ReplaceStr Schwierigkeiten
 
Von mir nochmals vielen DAnk für die vielen Anregungen!

Viele Grüße
LingNeu

Sir Rufo 10. Sep 2015 18:22

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von LingNeu (Beitrag 1315486)
Von mir nochmals vielen DAnk für die vielen Anregungen!

In welcher Unit befand sich bei dir denn jetzt
Delphi-Quellcode:
ReplaceStr
?

LingNeu 11. Sep 2015 11:11

AW: ReplaceStr Schwierigkeiten
 
@Sir Rufo,
war gar nicht leicht festzustellen wo die function ReplaceStr versteckt war.
Mit keinem Shortcut ging was.
Schließlich habe ich den Pascalanalyzer bemüht und ...

die Funktion ist in der Komponente TsiCustomLang (Internationalisierungstool)

Gruß an Dich
LingNeu

Dejan Vu 12. Sep 2015 07:45

AW: ReplaceStr Schwierigkeiten
 
Ich bin neu hier (in dem Thread). Warum verwendet man nicht StringReplace aus der SysUtils-Unit (die eigentlich immer verfügbar ist)?

Was Du hier machst ist in etwas vergleichbar mit dem Import einer Brotfabrik aus Uzbekistan (Nord), um sein Sonntagsbrötchen zu bekommen, was es auch beim Bäcker um die Ecke gibt. Geht, ist aber umständlich.

Luckie 12. Sep 2015 18:24

AW: ReplaceStr Schwierigkeiten
 
Zitat:

Zitat von Dejan Vu (Beitrag 1315591)
Was Du hier machst ist in etwas vergleichbar mit dem Import einer Brotfabrik aus Uzbekistan (Nord), um sein Sonntagsbrötchen zu bekommen, was es auch beim Bäcker um die Ecke gibt. Geht, ist aber umständlich.

Ohne den Weg zur Brotfabrik in Uzbekistan zu kennen. Er weiß nur dass da eine Brotfabrik ist. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 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