AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wort aus String extrahieren

Ein Thema von Sweex · begonnen am 27. Jun 2015 · letzter Beitrag vom 27. Jun 2015
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Wort aus String extrahieren

  Alt 27. Jun 2015, 13:38
Ich gehe mal davon aus, dass du diese Strings/Nachrichten selber erzeugst.

Warum hälst du die Nachrichten dann nicht mundgerecht vor? Dann könntest du dir dieses ganze Suchen und friemeln einfach sparen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#2

AW: Wort aus String extrahieren

  Alt 27. Jun 2015, 13:49
Erst einmal solltest du dir überlegen (oder wenn du dir das schon überlegt hast, uns verraten), nach welchen Regeln dein Programm die "wichtigen" Wörter erkennt.
Was ist denn das Problem bei deinem Lösungsversuch?

Generell würde ich für alle Aufgaben, die mit Stringerkennung zu tun haben, eine Unit für reguläre Ausdrücke verwenden. Nachdem du uns deine Delphi Version nicht verrätst, können wir nicht wissen, ob so etwas bei deinem Dephi schon dabei ist oder nicht. Wenn nicht (Delphi vor XE) , gibt es z.B. TRegExpr

Geändert von idefix2 (27. Jun 2015 um 13:57 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Wort aus String extrahieren

  Alt 27. Jun 2015, 14:15
Das Ganze hängt davon ab was du suchst. Ein Vorschlag von mir:
Delphi-Quellcode:
var
  Outbound, Suchwort: string;
  Position, i: Integer;
begin
  Outbound := 'Messfehler in Modul 2A. Überprüfen Sie ebenfalls die Verbindung zu XY';
  Suchwort := 'Messfehler in Modul';
  Position := Pos(Suchwort, Outbound);
  if Position > 0 then
  begin
    Delete(Outbound, 1, Position + Length(Suchwort) - 1);
    Outbound := TrimLeft(Outbound);
    i := 1;
    while (Outbound[i] in ['0'..'9', 'A'..'Z', 'a'..'z']) and (i <= Length(Outbound)) do
      Inc(i);
    Outbound := Copy(Outbound, 1, i - 1);
  end;
  ShowMessage(Outbound);
end;
Ich gehe davon aus, dass du die Modulnummer suchst. Ich gehe auch davon aus, dass sich das Zeichen nach der Nummer unterscheiden kann, also Leerzeichen, Punkt, Stringende. Deshalb würde ich es so wie oben machen. Ansonsten ist den Code schon mal nicht falsch. Das ist Quatsch: if Position <> 0 then , da das ergebnis 0 oder größer sein kann, aber nicht kleiner Null. Ansonsten ok.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 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