Thema: Delphi Text durchsuchen

Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#17

Re: Text durchsuchen

  Alt 5. Jan 2009, 12:27
Also dieser Code ist arg bösartig:

Delphi-Quellcode:
  
stop := at;
while (aValue[stop+1] in permittedChar) and (stop < length(aValue)) do
begin
  Inc (stop)
end;
weil nämlich im Falle von "stop = length(value)" der Zugriff auf "aValue[stop+1]" einen RangeError auslösen sollte (passiert immer dann, wenn eine Mail-Adresse am Ende von aValue steht). Ditto bei der Suche nach dem Anfang der Mail-Adresse. Deswegen soll man ja auch beim Entwicklen und Debuggen diverse Compiler-Flags wie "Bereichsüberprüfung" und "Überlaufprüfung" einschalten.

Besser wäre hier (unter der Annahme, daß "Vollst. Boolesche Auswertung" abgeschaltet ist):

Delphi-Quellcode:
  
start := at-1;
while (start > 0) and (aValue[start] in permittedChar) do
begin
  Dec (start)
end;
{ hier steht start vor dem ersten gültigen Zeichen (kann 0 sein) }

stop := at+1;
while (stop <= length(aValue)) and (aValue[stop] in permittedChar) do
begin
  Inc (stop)
end;
{ hier steht stop nach dem letzten gültigen Zeichen (kann length() + 1 sein) }

Mytext:= Copy (aValue, start, stop - start - 1);
Uwe Raabe
  Mit Zitat antworten Zitat