| Autor |
Beitrag |
Jaegermeister1992
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 10.11.09 18:33
In Visual Basic gibt es eine Funktion wo man ein Zeichen (z.b. x) durch ? ersetzen kann somit wäre:
Ha??o = Hallo gibt es sowas für Delphi auch?
mfg Jo
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 10.11.09 18:35
StringReplace() ist die Funktion die du suchst, denk ich. Einfach mal eingeben und F1 drücken.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Jaegermeister1992 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 10.11.09 18:42
NEin damit kann man nur strings ersetzen ich möchte aber sozusagen wie in VB durch ein ? iein Zeichen ersetzen in Falle meines Bsp. die 2 o des wortes Hallo
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Di 10.11.09 19:00
ja.
Stringreplace.
Delphi-Quelltext 1:
| String := stringReplace('Ha??o','?','l',[rfReplaceAll]); |
|
|
Critter
      
Beiträge: 328
Erhaltene Danke: 3
Windows 7
Delphi 7 Pro.
|
Verfasst: Di 10.11.09 19:02
Hi,
Jaegermeister1992 hat folgendes geschrieben : | | NEin damit kann man nur strings ersetzen ich möchte aber sozusagen wie in VB durch ein ? iein Zeichen ersetzen in Falle meines Bsp. die 2 o des wortes Hallo |
du bist aber schnell mit deinem Nein. Strings sind eine Aneinanderreihung von Zeichen. Während also 'x' ein Zeichen ist ist 'Hallo' ein String. Allerdings gibt es auch Strings der Länge 1 (im unteren Beispiel '?' und 'l'), welche du in diesem Fall wie ein Zeichen nutzen kannst.
Wenn ich deine Frage richtig verstanden habe suchst du so etwas, womit elundril ritig gelegen hätte (einfach mal in das Button Klick auf einem Leeren From eingeben):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); Var Eingabe, Ergebnis : string; begin Eingabe := 'Ha??o'; Ergebnis := StringReplace(Eingabe, '?', 'l', [rfReplaceAll]); ShowMessage(Ergebnis); end; |
critter
_________________ Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
|
|
Jaegermeister1992 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 10.11.09 19:08
OK Sry ich glaube ich hab mein Problem ein wenig zu umständlich beschrieben diese ? steht in Basic für ein beliebigen buchstaben Somit ist Hallo = Ha??O es könne aber auch HaTTo oder Hasso richtig sein also ich suche ein Zeichen das sozusagen alles ist wie eine Leerstelle es ist schwer zu beschreiben;-)
mfg Jo
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Di 10.11.09 19:13
also ein Wildcard (oder so?!)?
|
|
Critter
      
Beiträge: 328
Erhaltene Danke: 3
Windows 7
Delphi 7 Pro.
|
Verfasst: Di 10.11.09 19:13
Hi,
was soll denn dann mit diesem Zeichen geschehen? Irgendwann musst du es doch gegen irgend etwas ersetzen - oder? Ich habe den Sinn des Platzhalters noch nicht verstanden.
critter
_________________ Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
|
|
Jaegermeister1992 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 10.11.09 19:16
genau Wildcards, so hieß des dange;-)
wie mache ich dies jetzt genau?
|
|
Jaegermeister1992 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 10.11.09 19:21
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| function Matchstrings(Source, pattern: string): Boolean; var pSource: array [0..255] of Char; pPattern: array [0..255] of Char;
function MatchPattern(element, pattern: PChar): Boolean;
function IsPatternWild(pattern: PChar): Boolean; var t: Integer; begin Result := StrScan(pattern, '*') <> nil; if not Result then Result := StrScan(pattern, '?') <> nil; end; begin if 0 = StrComp(pattern, '*') then Result := True else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then Result := False else if element^ = Chr(0) then Result := True else begin case pattern^ of '*': if MatchPattern(element, @pattern[1]) then Result := True else Result := MatchPattern(@element[1], pattern); '?': Result := MatchPattern(@element[1], @pattern[1]); else if element^ = pattern^ then Result := MatchPattern(@element[1], @pattern[1]) else Result := False; end; end; end; begin StrPCopy(pSource, Source); StrPCopy(pPattern, pattern); Result := MatchPattern(pSource, pPattern); end;
procedure TForm1.Button2Click(Sender: TObject); begin if Matchstrings('Sean Stanley', 'Sean*') then ShowMessage('strings match!'); if Matchstrings('Sean', 'Se?n') then ShowMessage('strings match!'); if not Matchstrings('Sean', 'Se?nn') then ShowMessage('strings don''t match!'); end; |
Moderiert von Klabautermann: Delphi-Tags eingefügt.
|
|
Jaegermeister1992 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 10.11.09 19:32
Blos dies kann ich auf des was ich vorhabe anwenden!
Delphi-Quelltext 1:
| iFound:=C1.Items.IndexOf('?("Hier könnte B,R,G,Y stehen")-1'); |
Somit sollen in der C1 - Liste nach B-1 nach R-1 nach G-1 und nach Y-1 stehen in der List könnten auch wenn dann nur diese 4 buchstaben vorne stehen!
Wie kann ich des verwirklichen?
Moderiert von Klabautermann: Delphi-Tags eingefügt.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Di 10.11.09 20:41
Hallo,
hier im Forum gibt es Delphi-BBCode-Tags für Code, nutze die bitte, so sieht das grauselig aus
Items.IndexOf vergleicht nur den vollständigen String der Items mit dem übergebenen String.
Etwa so sollte es mit einer Schleife realisierbar sein:
Delphi-Quelltext 1: 2: 3:
| for z := 0 to Pred(C1.Count) do if Matchstrings(C1.Item[z], 'Sean*') then ShowMessage('strings match! in Item: '+IntToStr(z)); |
//edit: man kann den letzten Beitrag editieren, musst nich immer einen Neuen anlegen.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|