![]() |
Re: Suche Hilfe für Stringverarbeitung mit Copy und Pos ...
wie wär's mit 'n kleinen schleifchen?
Delphi-Quellcode:
damit umgehste das problem,dass in einem PW auch mal ein oder mehrere kommas sein können... ausserdem brauchste den string nur einmal durchlaufen. sollte daher recht flott gehen...
program Project2;
{$APPTYPE CONSOLE} uses sysutils; function getEMailAddy(s: string): string; var i: integer; KommaCount: integer; quoted: boolean; begin quoted := false; result := ''; KommaCount := 0; for i := 1 to length(s) do begin if s[i] = '''' then quoted := not quoted; if not quoted and (s[i] = ',') then begin inc(KommaCount); if KommaCount > 4 then break; continue; end; if (KommaCount = 4) and (s[i] <> '''') then result := result + s[i]; end; end; var s: string = 'INSERT INTO bb1_users VALUES (''01'', ''MoYo'',''pw'',''pw'',''MoYo64@hotmail.de'','' '; begin writeln(GetEMailAddy(s)); //teststring readln; end. grüsse gg |
Re: Suche Hilfe für Stringverarbeitung mit Copy und Pos ...
Guten Morgen,
hier noch eine Funktion, welche auch mit maskierten Apostrophen fertig wird:
Delphi-Quellcode:
Grüße vom marabu
function ExtractValue(const s: string; index: Integer): string;
const PREFIX = '('; SUFFIX = ')'; QUOTE = ''''; var iStart, iLength: Integer; begin with {Classes.}TStringList.Create do begin iStart := Succ(Pos(PREFIX, s)); iLength := Pos(SUFFIX, s) - iStart; CommaText := Copy(s, iStart, iLength); if index < Count then Result := {SysUtils.}AnsiDequotedStr(Strings[index], QUOTE) else Result := ''; Free; end; end; |
Re: Suche Hilfe für Stringverarbeitung mit Copy und Pos ...
Das würde ich unbedinngt mit Regular Expressions und TRegExpr lösen:
![]()
Delphi-Quellcode:
// Diese einfache Funktion extrahiert alle E-Mail-Adressen aus dem InputString
// und legt eine Liste dieser Adressen in den Rückgabewert function ExtractEmails (const AInputString : string) : string; const EmailRE = '[_a-zA-Z\d\-\.]+@[_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]+)+' var r : TRegExpr; begin Result := ''; r := TRegExpr.Create; // Erzeuge Objekt try // garantiere Speicherfreigabe r.Expression := EmailRE; // der R.A. wird automatisch in die interne Struktur übersetzt // innerhalb der Zuweisung an diese Eigenschaft if r.Exec (AInputString) then REPEAT Result := Result + r.Match [0] + ', '; UNTIL not r.ExecNext; finally r.Free; end; end; begin ExctractEmails ('My e-mails is [email]anso@mail.ru[/email] and [email]anso@usa.net[/email]'); // gibt zurück: 'anso@mail.ru, [email]anso@usa.net[/email], ' end. |
Re: Suche Hilfe für Stringverarbeitung mit Copy und Pos ...
Zitat:
Ich werde es damit testen. Ich danke euch allen :) Sollte ich Probleme haben sag ich bescheid. |
Re: Suche Hilfe für Stringverarbeitung mit Copy und Pos ...
Und was spricht gegen
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:04 Uhr. |
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-2025 by Thomas Breitkreuz