Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi wie benutze ich regular expressions? (https://www.delphipraxis.net/134919-wie-benutze-ich-regular-expressions.html)

nat 4. Jun 2009 13:39

Re: wie benutze ich regular expressions?
 
jo, genau...
ich will mal nicht so sein:
Delphi-Quellcode:
uses StrUtils; //für posEx
...
function LastPos(const Needle, Haystack: String): integer;
var idx: integer;
begin
  result := 0;
  idx := 0;
  repeat
    idx := posEx(Needle, Haystack, idx+1);
    if idx > 0 then
      result := idx;
  until idx = 0;
end;

//und später dann
var
  idx: integer;
begin
  ...
  idx := LastPos('/', Match[1]);
  if idx > 0 then
    Filename := copy(Match[1], idx)
  else
    Filename := Match[1];

  //in Filename hast du jetzt nur den dateinamen!
  ...
end;
is nu so ausm kopf... denke aber ma wird wohl klappen.
guck dir den source an und versuch ihn zu verstehen!

nimmersattXD 4. Jun 2009 13:44

Re: wie benutze ich regular expressions?
 
hui mit nem ganzen quelltext hab ich nicht gerechnet!

vielen lieben dank!! hast mir sehr geholfen !!

fuer ein paar andere fragen mach ich neue themen auf ;)

nat 4. Jun 2009 13:52

Re: wie benutze ich regular expressions?
 
ich hab grad nochma etwas mit der regex rumgespielt...
damit könnte das auch gehen
Code:
[img]([^[/img]ModifierG := true;
gesetzt werden.

edit:
jo jo, kein problem :)
ich werd dann ma gucken was da so steht! ;)

nimmersattXD 4. Jun 2009 14:11

Re: wie benutze ich regular expressions?
 
oehm bin grad beim schreiben, aber :


Filename := copy(Match[1], idx)
else
Filename := Match[1];



also bei der autovervollstaendigung is kein copy drin! :oops:

nat 4. Jun 2009 14:20

Re: wie benutze ich regular expressions?
 
einfach mal "copy" markieren und F1 drücken :)
Delphi-Quellcode:
function Copy(S: string; Index: Integer; Count: Integer): string;
mußt bei meinem beispiel oben noch die länge hinten mit angeben, hab ich wohl vergessen.
sollteste aber wohl hinkriegen :)

nimmersattXD 4. Jun 2009 14:44

Re: wie benutze ich regular expressions?
 
ach was denkste wie gern ich f1 benutzten wuerde :( hab vista da geht die hilfe leider nich ... zum kotzen, jetzt wo man sie nicht hat vermisst man sie erstmal :roll:

nat 4. Jun 2009 14:48

Re: wie benutze ich regular expressions?
 
ich habe auch vista. du kannst die alte hilfe nachinstallieren. gibt auf der microsoft seite dafür n download.
dann geht alles wieder wie früher. mußte ma n bisserl suchen.

edit: oh, war ganz einfach zu finden ;)
http://www.microsoft.com/downloads/d...DisplayLang=de

nimmersattXD 4. Jun 2009 15:04

Re: wie benutze ich regular expressions?
 
cool daran hab ich noch nie gedacht :wall:

naja aber jetzt hab ich ja dich hihi :cheers:


sry dass ich jetzt noch was hab :roll:

hab jetzt noch eingebaut dass er weitersucht, aber da kommt bei mir fehlermeldung nachdem er das erste gefunden hat!

Delphi-Quellcode:
    procedure TForm1.BtnSearchSitClick(Sender: TObject);
var direct,filename:string;
    page:TStringList;
    i,idx:integer;
    re:TRegExpr;
    such:Boolean;
begin
direct:=Edpaths.Text;
GetFilesInDirectory(direct,'*index.html',LiBoSit.Items,true,true);
GetFilesInDirectory(direct,'*.htmlm',LiBoSit.Items,true,false);

LbSit.Caption:=(IntToStr(LiBoSit.Count));


//routine zum suchen der Url in den htmls

page:=TStringList.Create;
re:=TRegExpr.Create;

for i:=0 to LiBoSit.Count do
begin
   try
     page.LoadFromFile(LiBoSit.Items[i]);
     re.ModifierI:=true;
     re.ModifierG:=false;
     re.ModifierM:=false;
     re.ModifierS:=false;
     re.ModifierX:=false;
     re.Expression:='[img]([^[/img] 0 then filename:=copy(re.Match[1],idx+1,40)
         else filename:=re.match[1];
       LiBoPicsFoundInPages.Items[i]:=filename;
       such:=re.ExecNext
       until not re.ExecNext;
   finally
     page.Free;
     re.Free;
   end;
end;

end;
Fehlermeldung : "Access Violation at address 0000000. Read of address 0000000."

ich hab auch schon gegoogelt wie verrueckt aber nichts gefunden was mir geholfen hat.

nat 4. Jun 2009 15:49

Re: wie benutze ich regular expressions?
 
dein fehler dürfe hier liegen:
Delphi-Quellcode:
for i:=0 to LiBoSit.Count do
es muß
Delphi-Quellcode:
for i:=0 to LiBoSit.Count - 1 do
sein.
count gibt imemr die absolute anzahl an.
wenn z.B. count = 10, dann sind 10 elemente vorhanden.
da die zählung aber bei 0 beginnt hat das 10. element
den index 9.

nimmersattXD 4. Jun 2009 15:51

Re: wie benutze ich regular expressions?
 
hehe den fehler hab ich auch grad gefunden und gleich geaendert und das simekolon hinter such:=re.execnext hab ich auch angehaengt.


leider kommt die gleiche fehlermeldung immernoch!!


ich finds toll dass du mir so sehr hilfst, grosses dankeschoen!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 Uhr.
Seite 3 von 6     123 45     Letzte »    

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