-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
9. Jun 2009
result:=StringReplace(url,hex,chr(code),);
das problem ist, dass du hier immer in dem ursprungs-string ersetzt.
wenn mehr als ein %xx zeichen drin ist, dann wird nur das letzt ersetzen "übernommen"
beispiel: "hallo%20welt%A0bla"
nach dem 1. ersetzen: "hallo welt%A0bla"
nach dem 2. ersetzen: "hallo%20welt bla"
du mußt immer wieder in deinem result string arbeiten.
allerdings finde ich...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
8. Jun 2009
hmm, eigentlich nicht :)
ich sehe sowas immer als herausforderung.
wenn man es dann geschaft hat und die routine läuft
is die freude um so größer.
mal so aus neugier, wozu soll das prog eigentlich gut sein?
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
8. Jun 2009
ob deine motivation steigt, wenn dein programm wegen so einer "schlamperei" irgerdwann auf einmal nicht mehr geht.
ich weiß ja nicht... bin der meinung wenn, dann richtig :)
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
8. Jun 2009
%20 ist sicher, das häufigste vorkommen in diesem format, trotzdem können aber noch
andere zeichen mit % zeichen encodiert sein. %00 bis %FF kann vorkommen (theoretisch).
ich würde das etwas variabler machen (so wie ich das im letzten post geschrieben habe).
damit kannste alle zeichen umwandeln. dein stringreplace kennt nun nur %20.
und zu den jsp-dateien:
dann mußt du deinen filename...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
8. Jun 2009
was ist denn an den jsp-dateien anders, dass es nicht klappt?
dem regex is es egal, was das für dateien sind, solange die sachen
die er suchen soll in dem format wie bei dem html von dir gepostet
ist. das mit dem %20 könntest du entweder auch wieder über einen
regex lösen, oder schnell eine eigene routine schreiben.
das würd in etwas so ablaufen:
1) nach % suchen
2) wenn gefunden,...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
8. Jun 2009
copy&paste sollte schon richtig angewendet werden. du hast den regex von mir gar nicht ganz kopiert, da fehlt was! :roll:
außerdem muß ModifierG:=true; wie ich auch schon geschrieben hatte. hab den regex jetzt (beim testen)
noch um ne kleinigkeit erweitert, nimm am besten diesen hier:<img .*?src=??"(*?)??"
(und diesmal ganz kopieren)
damit solltest du die dateinamen bekommen. mußt halt nur...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
5. Jun 2009
er wendet LastPos doch nur auf den dateinamen (inkl pfad) des bildes an. da dürfte zum schluss kein / mehr kommen.
und der regex bleibt eigentlich auch innerhalb des ersten tag, da sollte </bla> keine rolle spielen.
@nimmersattXD: du wolltest doch NUR image dateien die per ... angegeben sind rausfiltern, oder?
oder wollteste noch links etc auslesen?
wenn der source per js ausgegeben wird...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
du gibst page ja auch im ersten schleifen durchlauf mit free frei.
danach ist page kein object mehr und ein zugriff darauf gibt eine
zugriffsverletzung.
stell das in etwa so um:
page := TStringList.Create; //oder was page auch is, grad nich geguckt
try
for i:=.....
begin
end;
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
oh ha, du solltest ma n delphi-crashkurs machen... 8)
klicke links neben einer zeile auf den punkt oder was auch immer da is.
wenn die zeile sich einfärbt haste da n breakpoint gesetzt.
wenn dein programm dort ankommt hält es an. mit F7 bzw F8 kannst du schritt
für schritt durch deine anweisungen durch gehen. mit F9 läuft es wieder
normal weiter.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
hatte ich eben auch noch gesehen. aber eigentlich dürfte das keine zugriffsverletzung auslösen.
höchstens ne expception.
edit: und ich warte noch immer auf die zeile in der es knalle... :roll:
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
tja, so müsst ich raten...
könnte noch daran liegen: LiBoPicsFoundInPages.Items:=filename;
hat die listbox denn schon sovielel emente? sonst mußte du
LiBoPicsFoundInPages.Items.Add(filename); machen.
wenn das nich geholfen hat, dann debugge deinen code mal und sage mir bei welcher
zeile genau der fehler kommt.
edit:
i.ü. ist das ziemlich ungünstig
filename:=copy(re.Match,idx+1,40)
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
dein fehler dürfe hier liegen:
for i:=0 to LiBoSit.Count do
es muß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.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
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/details.aspx?FamilyID=6ebcfad9-d3f5-4365-8070-334cd175d4bb&DisplayLang=de
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
einfach mal "copy" markieren und F1 drücken :)
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 :)
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
ich hab grad nochma etwas mit der regex rumgespielt...
damit könnte das auch gehen
(ModifierG := true;gesetzt werden.
edit:
jo jo, kein problem :)
ich werd dann ma gucken was da so steht! ;)
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
jo, genau...
ich will mal nicht so sein:
uses StrUtils; //für posEx
...
function LastPos(const Needle, Haystack: String): integer;
var idx: integer;
begin
result := 0;
idx := 0;
repeat
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
naja, das is ja schnell gemacht...
- letzte position von / ermitteln
- wenn gefunden von da bis ende des strings kopieren
das sollte man auch ohne regex hinkriegen :)
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
kannst du nich schnell mal n auszug nehmen und die texte/links austauschen? dann is doch nichts mehr drin!
wie gesagt, bei mir klappt das alles problemlos. du achtest auch darauf Match1] zu nehmen statt
Match0]? in Match ist der img-tag, in Match nur der dateiname!
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
und genau das bekomme ich bei mir :)
poste hier ma den quelltext von deinem html.
dann kann ich das auch mal testen.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
also habs grad getestet, meine expr geht bei mir.
wie sieht denn dein html aus?
wie gesagt, das hier geht bei mir:var
Succ: Boolean;
begin
with TRegExpr.Create do
try
ModifierG := false;
Expression := '<img .*src="(*)"';
InputString := Memo1.Text;
-
Forum: Object-Pascal / Delphi-Language
Delphi
by nat,
4. Jun 2009
probier es doch ma damit
<img .*src="(*)"
greedy sollte dabei allerdings aus!