Entwickler-Ecke

Sonstiges (Delphi) - PCRE funktioniert nicht mit Delphi 2009


Hendi48 - Fr 12.09.08 18:25
Titel: PCRE funktioniert nicht mit Delphi 2009
Hi,

ich verusche gerade irgendwie PCRE in Delphi 2009 zum Laufen zu bekommen, aber es geht einfach nicht.
Mein Code sieht so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var
  R: TRegEx;
  M: TRegExMatch;
  MemoString, rs: string;
begin
  MemoString := 'http://blabla.com/';
  
  R := TRegEx.Create('http', []);
  M := R.Match(MemoString);
  if M.Matched then
    rs := M.Value
  else
    rs := 'kein Treffer';
 
  MessageBox(Handle, PChar(rs), '', MB_OK);

Das Ergebnis ist "h". Einfach nur ein h. Richtig würde aber doch "http" sein, oder?

Ich hab mal meine PCRE Unit angehängt. Ich hoffe jemand von euch weiß wo der Fehler liegt, die Unit ist nämlich sehr wichtig für mein Projekt.

Gruß,
Hendi


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 12.09.2008 um 18:28


mkinzler - Fr 12.09.08 21:26

Wird mit dem neuen Standardstring (UnicodeString statt AnsiString) zusammenhängen


Bernhard Geyer - Fr 12.09.08 22:22

Ohne Anzusehen würde ich darauf tippen das RegEx-DLL nicht Unicodefähig ist und nur eine Ansi-Schnittstelle hat. Dummerweise wird sie jetzt mit 2Byte-Charactern aufrufen bei denen bei "normalen" Strings jedes 2te Byte ein $00 ist was bei C das Zeichenende ist.

Besorg dir lieber eine Unicodefähige Regex-Bibliothek wie aus dem ElPack oder eine ander OpenSource-Komponente bei der ich gerade nicht die URL zur verfügung habe.


mkinzler - Fr 12.09.08 23:14

http://www.regexpstudio.com/TRegExpr/TRegExpr.html


Hendi48 - Fr 12.09.08 23:15

Hm, ok, hab mir schon gedacht, dass es an den UnicodeStrings liegt. Dann muss ich wohl eine andere Komponente nehmen.