AGB  ·  Datenschutz  ·  Impressum  







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

Speziellen Substring aus String kopieren

Ein Thema von 13Horst37 · begonnen am 24. Jun 2009 · letzter Beitrag vom 25. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
13Horst37

Registriert seit: 24. Jun 2009
5 Beiträge
 
#1

Speziellen Substring aus String kopieren

  Alt 24. Jun 2009, 23:51
Hallo zusammen!

Ich (Delphi-Anfänger ), versuche seit 3 Stunden aus einem (sehr langen) String einen speziellen Substring zu kopieren. Problem an der ganzen Sache: Der Substring ist nie gleich. Noch dazu komm ich mit Copy und Pos nicht so klar wie ich es gerne hätte

Beispiel:

In String "Haupt" befindet sich der gesuchte Substring "Unbekannt". Das einzige was über diesen Substring bekannt ist, ist folgendes:
Er befindet sich 1 Stelle nach dem Substring "Edit1.text".

Dies ändert sich nie, dennoch ist der gesuchte Substring bei meinem Projekt niemals der Gleiche.

Wie zum Teufel schaffe ich es, diesen String herauszufinden?
Die einzige Information ist, wie gesagt, der andere Substring vor dem gesuchten Substring, nichtmal die Position ist immer die Gleiche.

So hab ich es probiert - erfolglos:

Delphi-Quellcode:
SubStr1 := Pos (x,s); // x = bekannter Substring, s = "Haupt"
SubStr2 := Copy (s, Substr1+1,7);
ShowMessage(SubStr2)
Selbst wenn der Code funktionieren würde, wäre ich noch unzufrieden damit, da auch er seine Funktion nicht wirklich erfüllen kann: Die Länge des gesuchten Substrings ist ebenfalls unbekannt, die 7 im Code ist blos, damit ich überhaupt ein Ergebnis bekomme.

Nochmal die Fakten über den unbekannten Substring:
- Niemals der gleiche
- Immer unterschiedlich lang
- Position im String nie gleich
- allerdings immer nach Substring "Edit1.text"
- Gesuchter SubString endet bei nächstem Leerzeichen

Ich hoffe das ganze war jetzt nicht zu verwirrend...
Danke im Vorraus an alle, die sich die Mühe machen mir zu helfen!
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Speziellen Substring aus String kopieren

  Alt 24. Jun 2009, 23:59
Zitat von 13Horst37:
- Immer unterschiedlich lang
Gibts irgend einen Hinweis, wann der String zu Ende ist?
Fridolin Walther
"While Mr. Kim, by virtue of youth and naiveté, has fallen prey to the inexplicable need for human contact, let me step in and assure you that my research will go on uninterrupted, and that social relationships will continue to baffle and repulse me."
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

Re: Speziellen Substring aus String kopieren

  Alt 25. Jun 2009, 00:10
Dir als Anfänger würde ich noch die Prozedur Delete enpfehlen. Sie hat die gleichen Parameter wie Copy. Zwar kann man alles mit Copy machen, aber als Anfänger kann man sich das leichter machen.

Außerdem würde ich dir empfehlen mit einem Temporär-String zu arbeiten, also einer Kopie deines eigentlichen Strings. Dann kannst du dein Temporär-String auch zerlegen ohne dein eigentlichen String zu zerstören.

Also

Delphi-Quellcode:
var
  ...
  sTemp: String;
begin
  ...
  sTemp := s;

  Delete(sTemp, 1, Pos(x,sTemp) + 1); // entfernt alles bis zu der Such-Position und ein Zeichen mehr

  SubStr2 := Copy (sTemp, 1, Pos(' ', sTemp)); // kopiert alles bis zum nächsten Leerzeichen

  ShowMessage(SubStr2)
//

EDIT:

Ich hab bemerkt, daß ich den Beitrag missverstanden habe. Ich bearbeite meine Antwort noch mal.

EDIT2:

Ich glaube es war doch richtig. Wenn nicht, dann bessere ich es aus. Die ganzen bekannte und unbekannte Substrings bringen mich irgendwie durcheinander. Am besten ein Text als Beispiel, dann wäre das einfacher.
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Speziellen Substring aus String kopieren

  Alt 25. Jun 2009, 00:13
Oder man lagert die Funktionalität direkt in eine Funktion aus, weshalb man dank Call By Value ohnehin eine "eigene Kopie" hat die man lustig zerstückeln kann wie man will .
Fridolin Walther
"While Mr. Kim, by virtue of youth and naiveté, has fallen prey to the inexplicable need for human contact, let me step in and assure you that my research will go on uninterrupted, and that social relationships will continue to baffle and repulse me."
  Mit Zitat antworten Zitat
13Horst37

Registriert seit: 24. Jun 2009
5 Beiträge
 
#5

Re: Speziellen Substring aus String kopieren

  Alt 25. Jun 2009, 00:17
Zitat von Fridolin Walther:
Zitat von 13Horst37:
- Immer unterschiedlich lang
Gibts irgend einen Hinweis, wann der String zu Ende ist?
Ja, der String ist beim nächsten Leerzeichen zuende, also eine (willkürliche) Kette von Buchstaben und Zahlen.

Zu Popov:

Der String kann ruhig zerstückelt werden, den brauch ich danach nicht mehr

Grüße

Edit1 für Popov:

Also, gesucht ist SubString "Unbekannt" im String "Unwichtig".
Einziges Indiz: "Unbekannt" steht immer direkt nach dem bekannten Substring "Bekannt", und endet mit einem Leerzeichen.

Ziel des Ganzen: "Unbekannt" soll in eine Variable / einen String extrahiert werden.

Reicht das, oder was genau hast du nicht verstanden?

Grüße
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

Re: Speziellen Substring aus String kopieren

  Alt 25. Jun 2009, 00:34
Zitat von 13Horst37:
Also, gesucht ist SubString "Unbekannt" im String "Unwichtig".
Einziges Indiz: "Unbekannt" steht immer direkt nach dem bekannten Substring "Bekannt", und endet mit einem Leerzeichen.
Eigentlich nicht, denn deine "Unbekannt", "Unwichtig" und "Bekannt" String-Beispiele sind das verwirrende.

Mach es doch einfacher:

Gesucht wird SubString im String. Einziges Indiz: der unbekannte SubString steht immer direkt nach dem bekannten SubString und endet mit einem Leerzeichen.

Ist es das was du willst?
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Speziellen Substring aus String kopieren

  Alt 25. Jun 2009, 00:35
Nunja, prinzipiell würde das ganze so aussehen:

Du suchst mit Pos den String "Edit1.text" in deinem String.
Sobald Du die Position hast, löscht Du mit Delete vom Anfang des Strings bis zur gefundenen Position + 9 (Edit1.Text ist 10 Zeichen lang, aber das E ist von der gefundenen Position schon "inkludier") alle Zeichen im String.
Jetzt beginnt der bearbeitete String mit dem gewünschten variablen String. Allerdings hängt da ja jetzt wie Du meintest noch jede Menge Gewusel hinten dran.
Entsprechend ist der nächste Schritt jetzt, das abschließende Leerzeichen zu finden mit Pos und von dieser Position aus den Rest ebenfalls zu löschen.
Dadurch hast Du den gesuchten String Quasi aus dem Original String "herausgeschnitten".

Hier ist auch eine Demonstration wie das implementiert werden könnte. Ich würde Dir aber empfehlen es basierend auf der Anleitung auch mal selbst zu probieren:
Delphi-Quellcode:
function ExtractSubStringFromString(StringToExtractFrom : string) : string;
var
  StringStart, StringEnd : Integer;
begin
  StringStart := Pos('Edit1.text', StringToExtractFrom);
  if StringStart > 0 then
    begin
      Delete(StringToExtractFrom, 1, StringStart + 9);
      StringEnd := Pos(' ', StringToExtractFrom);
      if StringEnd > 0 then
        begin
          Delete(StringToExtractFrom, StringEnd, Length(StringToExtractFrom));
          Result := StringToExtractFrom;
        end;
    end;
end;
Wenn Du Fragen zur Funktion hast, nur raus damit.
Fridolin Walther
"While Mr. Kim, by virtue of youth and naiveté, has fallen prey to the inexplicable need for human contact, let me step in and assure you that my research will go on uninterrupted, and that social relationships will continue to baffle and repulse me."
  Mit Zitat antworten Zitat
13Horst37

Registriert seit: 24. Jun 2009
5 Beiträge
 
#8

Re: Speziellen Substring aus String kopieren

  Alt 25. Jun 2009, 00:40
Zitat von Popov:
Gesucht wird SubString im String. Einziges Indiz: der unbekannte SubString steht immer direkt nach dem bekannten SubString und endet mit einem Leerzeichen.

Ist es das was du willst?
Ja, genau so.

Sorry wollte es mit meinen Bezeichnungen blos einfacher machen, weils mich selbst langsam verwirrt...

@ Fridolin

Danke, das werd ich gleich mal ausprobieren. Das einzige was noch nicht stimmt:
Mit Edit1.Text meinte ich eigentlich auch einen String, hab ich leider falsch formuliert. Der ergibt sich eben aus dem Inhalt vom Textfeld Edit1.Text.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

Re: Speziellen Substring aus String kopieren

  Alt 25. Jun 2009, 00:44
Ist ungeprüft, sollte aber funktionieren:

Delphi-Quellcode:
var
  p: Integer;
  SubStr, Str, SubStr2: String;
begin
  p := Pos(SubStr, Str);
  Delete(Str, 1, p + Length(SubStr) + 1);
  SubStr2 := Copy (Str, 1, Pos(' ', Str));
  ShowMessage(SubStr2)
Versuch das.
  Mit Zitat antworten Zitat
13Horst37

Registriert seit: 24. Jun 2009
5 Beiträge
 
#10

Re: Speziellen Substring aus String kopieren

  Alt 25. Jun 2009, 00:53
Hm, würde gerne beide Varianten ausprobieren, aber seit etwa 3 Minuten bekommt mein Delphi regelmäßig den fatalen Fehler "SY576"

Mal schauen ob ich das i-wie noch hinbekomme heute, auf jeden Fall vielen Dank euch beiden, ihr habt mir sehr geholfen!

Kleine Auflösung, wie zur Hölle so ein String überhaupt entstehen kann, falls es jemanden interessiert:
Entschlüsselter Md5 Hash.

Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:15 Uhr.
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