AGB  ·  Datenschutz  ·  Impressum  







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

Like unter Delphi

Ein Thema von smudo · begonnen am 24. Apr 2007 · letzter Beitrag vom 2. Mai 2007
Antwort Antwort
Seite 2 von 2     12   
Muetze1
(Gast)

n/a Beiträge
 
#11

Re: Like unter Delphi

  Alt 24. Apr 2007, 12:17
Falls ihr OpenSource etc baut, dann weise ich hier mal darauf hin, dass die Unit Masks nicht in den Personal Editionen von Delphi enthalten waren/sind. Ich habe deshalb auch eine eigene Implementation schreiben müssen für meine XMLLib. Im Archiv ist die Funktion enthalten, Link in der Signature...

Ansonsten gibt es ab (D6?) D7 in der StrUtils die Funktion Delphi-Referenz durchsuchenSoundExSimilar() welche hierbei vllt. auch hilfreich ist, wobei die Funktion eher auf ähnliche Aussprache achtet als auf ähnliche Schreibweise...
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#12

Re: Like unter Delphi

  Alt 24. Apr 2007, 12:24
Zitat von Muetze1:
wobei die Funktion eher auf ähnliche Aussprache achtet
und dazu nur in Englisch und ähnlich auszusprechenden Sprachen

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#13

Re: Like unter Delphi

  Alt 25. Apr 2007, 13:34
Ich habs vorerst mit der von Schubi geposteten Methode gelöst - nur anstelle des * das % verwendet.

Mehr würde mich aber die Möglichkeit über die regulären Ausdrücke interessieren. Das Programm von Chris habe ich dafür schon mal benutzt, bin allerdings auf diesem Gebiet noch völlig unbewandert:
  • eine Like-Abfrage z.B. für reg% Ausdr?ck* scheint mit RegEx so auszusehen: reg[ /.äöü\w]* Ausdr[ äöü\w]ck[ äöü\w]*
    damit finde ich reguläre Ausdrücke, reg. Ausdrücke, reg. Ausdruck
    Liege ich damit richtig
  • Ich habe keinen Plan, wie ich diesen (oder einen besseren) regulären Ausdruck unter Delphi verwenden kann
  Mit Zitat antworten Zitat
Benutzerbild von CK_CK
CK_CK

Registriert seit: 31. Aug 2005
Ort: Dortmund, Germany
388 Beiträge
 
Delphi 2006 Enterprise
 
#14

Re: Like unter Delphi

  Alt 25. Apr 2007, 13:43
Hi!
Für reguläre Ausdrücke kann ich den Wikipedia-Artikel dazu empfehlen. Da wird die ganze Syntax perfekt beschrieben.

Für Delphi gibt's z.B. [DIESE] Unit. Die funktioniert schön schnell und versteht auch die Perl-Extensions. Da ist auch eine (deutsche) Dokumentation dabei.

Viele Grüße,
Chris
Chris
» «
Mehr von mir (Programme, etc.): http://www.kroegerama.de
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#15

Re: Like unter Delphi

  Alt 25. Apr 2007, 15:11
Guckst du hier:

Delphi-Quellcode:
function Like(const AString, APattern: String): Boolean;
var
  StringPtr, PatternPtr: PChar;
  StringRes, PatternRes: PChar;
begin
  Result:=false;
  StringPtr:=PChar(AString);
  PatternPtr:=PChar(APattern);
  StringRes:=nil;
  PatternRes:=nil;
  repeat
    repeat
      case PatternPtr^ of
        #0: begin
          Result:=StringPtr^=#0;
          if Result or (StringRes=nil) or (PatternRes=nil) then
            Exit;
          StringPtr:=StringRes;
          PatternPtr:=PatternRes;
          Break;
        end;
        '*': begin
          inc(PatternPtr);
          PatternRes:=PatternPtr;
          Break;
        end;
        '?': begin
          if StringPtr^=#0 then
            Exit;
          inc(StringPtr);
          inc(PatternPtr);
        end;
        else begin
          if StringPtr^=#0 then
            Exit;
          if StringPtr^<>PatternPtr^ then begin
            if (StringRes=nil) or (PatternRes=nil) then
              Exit;
            StringPtr:=StringRes;
            PatternPtr:=PatternRes;
            Break;
          end
          else begin
            inc(StringPtr);
            inc(PatternPtr);
          end;
        end;
      end;
    until false;
    repeat
      case PatternPtr^ of
        #0: begin
          Result:=true;
          Exit;
        end;
        '*': begin
          inc(PatternPtr);
          PatternRes:=PatternPtr;
        end;
        '?': begin
          if StringPtr^=#0 then
            Exit;
          inc(StringPtr);
          inc(PatternPtr);
        end;
        else begin
          repeat
            if StringPtr^=#0 then
              Exit;
            if StringPtr^=PatternPtr^ then
              Break;
            inc(StringPtr);
          until false;
          inc(StringPtr);
          StringRes:=StringPtr;
          inc(PatternPtr);
          Break;
        end;
      end;
    until false;
  until false;
end;
Das hab ich hier mal irgendwo im Forum gefunden ..
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
26. Apr 2007, 06:44
Dieses Thema wurde von "Sharky" von "Datenbanken" nach "Object-Pascal / Delphi-Language" verschoben.
Das ist hier sicher besser aufgehoben.
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#17

Re: Like unter Delphi

  Alt 26. Apr 2007, 19:27
Hier -> * klick * hab ich was gefunden mit dem du vergleichen kannst zu wie viel % 2 strings gleich sind... vllt kannst du damit was anfangen.

edit:
und hier kannst du auch mal vorbeischauen
Dominik
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#18

Re: Like unter Delphi

  Alt 2. Mai 2007, 13:56
@dominikkv: Dein zweiter Link entspricht dem, was andere schon hier gepostet haben, was auch wirklich gut funktioniert und was meine Frage beantwortet. Für mich blieb nur noch offen, wie man das Ganze mit regulären Ausdrücken machen kann (vielen Dank an CK_CK)

Der erste Link klang auch ganz spannend, ist aber leider nach genauerem Hinsehen ziemlich dürftig...

Vielen Dank an alle

René
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 09:14 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