Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TPerlRegEx einbinden? (https://www.delphipraxis.net/137686-tperlregex-einbinden.html)

Chefx 26. Jul 2009 21:30


TPerlRegEx einbinden?
 
Hey DBs, :hi:

wie kann ich denn die TPerlRegEx einbinden ?
geht das wie eine DLL - Datei einzubinden oder wie? :?:

danke für antworten

Bernhard Geyer 26. Jul 2009 21:32

Re: TPerlRegEx einbinden?
 
Wieso so umständlich? Es gibt doch 100% Delphi RegEx-Implementierungen.

Meflin 26. Jul 2009 21:37

Re: TPerlRegEx einbinden?
 
Zitat:

Zitat von Bernhard Geyer
Wieso so umständlich? Es gibt doch 100% Delphi RegEx-Implementierungen.

Was ist an TPerlregEx umständlich?
Delphi-Quellcode:
uses
  TPerlRegEx;
... feritg.

Zitat:

You can choose to link the OBJ files directly into your application, or to use the DLL.
http://www.regular-expressions.info/delphi.html

Chefx 26. Jul 2009 21:40

Re: TPerlRegEx einbinden?
 
und welche funktionen muss ich denn dann einbinden?

Namenloser 26. Jul 2009 22:19

Re: TPerlRegEx einbinden?
 
Zitat:

Zitat von Bernhard Geyer
Wieso so umständlich? Es gibt doch 100% Delphi RegEx-Implementierungen.

Die taugen aber nichts (sind nicht perlkompatibel) :wink:

Chefx 26. Jul 2009 22:29

Re: TPerlRegEx einbinden?
 
Hey DBs,

hab mal gegoogelt und bin wieder auf die DB site gekommen und hab ein gutes beispiel gefunden (zwar nicht in TPerlRegEx) :idea:

RegEx in Delphi 2009/ Lasse2002:
Zitat:

Dann muß ich doch mal wieder Werbung für meine Seite mit Delphi 2009 Komponenten machen:
http://www.songbeamer.com/delphi/

RegExpStudio für Delphi 2009 ist auch dabei.
ich nehme jetzt erstmal das und wenn ich doch nochmal auf TPerlRegEx zurück kommen will melde ich mich nochmal.

:thumb: vielen dank für eure tollen antworten! :thumb:

MfG

Chefx

Chefx 26. Jul 2009 22:37

Re: TPerlRegEx einbinden?
 
Ich hab das gleiche wie mit dem oben gemacht!

geht ja wirklich einfach!

Aber gibt es eine übersicht oder ähnliches wo man die ganzen Befehle oder Eigenschaften von Tperlregex beschrieben sind?

Bernhard Geyer 27. Jul 2009 10:02

Re: TPerlRegEx einbinden?
 
Zitat:

Zitat von NamenLozer
Zitat:

Zitat von Bernhard Geyer
Wieso so umständlich? Es gibt doch 100% Delphi RegEx-Implementierungen.

Die taugen aber nichts (sind nicht perlkompatibel) :wink:

Und was ist nicht Kompatible? Oder ist Perl nicht mit dem RegEx-Standard kompatible?

worker 27. Jul 2009 10:38

Re: TPerlRegEx einbinden?
 
Zitat:

Zitat von Bernhard Geyer
Und was ist nicht Kompatible?

Du kannst die Engine beispielsweise nicht veranlassen, das automatische Gruppieren geklammerter Ausdrücke zu unterbinden.
Die Perl-kompatiblen Engines haben nunmal den höchsten Funktionsumfang; daran lässt sich nichts rütteln.

Chefx 29. Jul 2009 14:09

Re: TPerlRegEx einbinden?
 
Hallo DBs, :hi:

So ich hab mal ein bissel probiert und hab da noch eine frage.

unter dem beispiel oben("RegEx in Delphi 2009/ Lasse2002...") das reine Delphi-Regex-Implementierungen ist sie das so aus:
Delphi-Quellcode:
procedure test();
const
  e = '^[aA]$';
  t = 'a';
var
  r : Tregexpr;
begin
  r := TRegExpr.Create;
  r.Expression := e;
  try
    if r.Exec(t) then
      REPEAT
          edit1.Text := r.Match [0] + ',';
      UNTIL not r.ExecNext;
  finally r.Free;
  end;
end;
und wie sieht das nun in perlregex aus
würde man das genauso schreiben (außer das bei Tregexpr nun Tperlregex) dann geht das nicht!
Die funktion Expression gibt es bei Perlregex auch nicht! :gruebel:
Kann mir vielleicht jemand das an ein Beispiel mit dem gleichen Inhalt wie oben unter Perlregex zeigen und
vielleicht noch ein bissel erklären?
(Außer das mit dem Regulären Ausdrücken hab da schon ein Tutorial besucht bloß das
ist unter C# und da sieht das auch ein bisschen anders aus!)

MfG
Chefx

Klaus01 29. Jul 2009 14:16

Re: TPerlRegEx einbinden?
 
Hallo,

diesen Codeschnipsel habe ich hier gefunden.
Vielleicht hilft er Dir ja weiter.

Delphi-Quellcode:
function MatchExpression(subj, expr: string; max: boolean = False): string;
begin
  with TPerlRegEx.Create(nil) do
    begin
      RegEx := expr;
      Subject := subj;

      if Match then
        begin
          if max then
            repeat
              result := SubExpressions[SubExpressionCount]
            until not MatchAgain
          else
            result := SubExpressions[1];
        end;
    end;
end;
Grüße
Klaus

Chefx 29. Jul 2009 14:30

Re: TPerlRegEx einbinden?
 
Danke bloß jetzt kommt bei mir fehler in der cpu!

weiß nicht wo ich da hier ein fehler gemacht hab?

hier noch mal mein gesamter quelltext:
Delphi-Quellcode:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm3 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

uses perlregex;

{$R *.dfm}

function MatchExpression(subj, expr: string; max: boolean = False): string;
begin
  with TPerlRegEx.Create(nil) do
    begin
      RegEx := expr;
      Subject := subj;

      if Match then
        begin
          if max then
            repeat
              result := SubExpressions[SubExpressionCount]
            until not MatchAgain
          else
            result := SubExpressions[1];
        end;
    end;
end;

procedure TForm3.Button1Click(Sender: TObject);
begin
edit1.Text:=MatchExpression('a','^[aA]$');
end;

end.
also reinthoretidch müsst das doch klappen. :gruebel:

Klaus01 29. Jul 2009 14:35

Re: TPerlRegEx einbinden?
 
Wann kommt denn der Fehler, hast Du mal Haltepunkte gesetzt
und mit F7 bzw. F8 gearbeitet?

Welche Delphiversion nutzt Du?

Grüße
Klaus

Chefx 29. Jul 2009 14:42

Re: TPerlRegEx einbinden?
 
Also wenn ich das Projekt starte
kommt in der CPU
in der
ntdll.Dbgbreakpoint:
...
77957DFF C3 ret

keine ahnung was das heißt :?:

zurzeit Delphi 2009 (Trialer)

wenn das damit nicht funktioniert kann ich auch auf Turbodelphi wechseln!

Klaus01 29. Jul 2009 14:45

Re: TPerlRegEx einbinden?
 
zu dem ntdll.Dbgbreakpoint hilft Dir das vielleicht.


Das Problem solltest Du nicht haben, wenn Du das Programm ausserhalb der IDE startest.#

Und ob TPerlRegEx UniCode fähig ist - keine Ahnung.

Grüße
Klaus

worker 29. Jul 2009 14:46

Re: TPerlRegEx einbinden?
 
In dem Zip, das Du heruntergeladen hast, befindet sich die PerlRegEx.hlp; vielleicht solltest Du Dir die mal zu Gemüte führen...

Chefx 29. Jul 2009 15:01

Re: TPerlRegEx einbinden?
 
das geht leider unter Vista nicht.
und wie binde ich die dann den patch ein?
achso
und der findet die pcre3.dll nicht!

worker 29. Jul 2009 15:07

Re: TPerlRegEx einbinden?
 
Zitat:

Zitat von Chefx
und der findet die pcre3.dll nicht!

Mit Lesen und ein bissel selber mal forschen hast Du es nicht so, gell?
Lies Dir die Entwicklerkommentare in der pcre.pas durch; dafür sind sie gedacht *grml*

Chefx 29. Jul 2009 15:24

Re: TPerlRegEx einbinden?
 
oh ja stimmt ! :pale:

wenn ich das richtig verstanden hab muss man die pcre3.dll dort in der pcre.pas definieren?
Wie denn?(hab das noch nie gemacht :lol: )
Zitat:

Delphi-Quellcode:
// Define PCRE_LINKDLL to use pcre3.dll
{$DEFINE PCRE_LINKDLL} //<--hier das definieren?


worker 29. Jul 2009 15:31

Re: TPerlRegEx einbinden?
 
Erstmal:

Die DLL befindet sich im Unterverzeichnis '\pcre'.
Die muss sich, solltest Du sie benutzen wollen, natürlich in dem Verzeichnis befinden, in dem sich später auch Deine Exe befindet; oder aber zumindest in einem Verzeichnis, dass in der Path-Variable eingetragen ist. Und Du musst sie dann halt mit ausliefern, wenn Du Deine Anwendung veröffentlichst.

Solltest Du die DLL nutzen wollen, so musst Du in der pcre.pas
Delphi-Quellcode:
{$DEFINE PCRE_LINKDLL}
setzen und
Delphi-Quellcode:
{$DEFINE PCRE_STATICLINK}
auskommentieren.

Solltest Du die DLL nicht nutzen wollen, so machst Du das oben genannte anders herum.
Dabei werden dann die OBJ-Files in Deine Exe gelinkt, und Du kannst auf das Deployment von Dritt-Dateien verzichten.

Achtung
Wenn Du die DLL nicht nutzen willst, dann darfst Du die Sourcen nicht über ein Package in Deine IDE integrieren; ansonsten bekommst Du einen internen Fehler!

Chefx 29. Jul 2009 15:47

Re: TPerlRegEx einbinden?
 
danke ! :thumb:
hab das mit der dll gemacht und dann den patch eingesetzt!

so aber wenn ich jetzt auf mein button drücke gibt er nichts aus!
reinteoretisch müsste er doch a ausgeben!

Namenloser 29. Jul 2009 15:51

Re: TPerlRegEx einbinden?
 
Hast du den Ausdruck mal in Klammern gesetzt?

Chefx 29. Jul 2009 15:54

Re: TPerlRegEx einbinden?
 
oh ja hab ich ganz vergessen
danke!

worker 29. Jul 2009 15:54

Re: TPerlRegEx einbinden?
 
Zitat:

Zitat von Chefx
danke ! :thumb:
hab das mit der dll gemacht und dann den patch eingesetzt!

so aber wenn ich jetzt auf mein button drücke gibt er nichts aus!
reinteoretisch müsste er doch a ausgeben!

Nein, muss er nicht, da Du keine SubExpression hast.
Also musst Du mit SubExpressions[0] arbeiten.

Chefx 29. Jul 2009 15:59

Re: TPerlRegEx einbinden?
 
danke klaus01 und :arrow: worker :thumb: das ihr meine ganzen fragen beantwortet habt! :thumb: :thumb: :thumb: :thumb:

anse 29. Jul 2009 18:51

Re: TPerlRegEx einbinden?
 
Wollte gerade sagen ich hätte noch eine weitere Alternative, dabei fällt mir auf das die RegExpr.pas in RegExpStudio ( http://tib.s.songbeamer.eu/downloads/RegExpStudio.zip ) die gleiche ist wie im UniSynEdit Paket. Der Code stimmt fast 100%ig überein, bis auf eine Handvoll unwichtiger Compilerschalter-Benennungen. Da scheint sich UniSynEdit an Anso bedient zu haben - naja, solange der Copyright Vermerk stehen bleibt ist das ja ok.


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