Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

Klaus01 29. Jul 2009 15: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 15: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 15: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 15: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 15: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 15: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 16: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 16: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 16: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 16: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!


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz