AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein wort zwischen 2 zeichen rauskopieren
Thema durchsuchen
Ansicht
Themen-Optionen

wort zwischen 2 zeichen rauskopieren

Ein Thema von RuSsAk · begonnen am 2. Aug 2014 · letzter Beitrag vom 2. Aug 2014
Antwort Antwort
Seite 1 von 2  1 2      
RuSsAk

Registriert seit: 18. Jan 2008
39 Beiträge
 
#1

wort zwischen 2 zeichen rauskopieren

  Alt 2. Aug 2014, 07:16
Hallo
kann mir bitte jemand sagen wie ich ein Wort aus einem Quellcode zwischen 2 Zeichen in ein edit oder memo laden kann?

der quellcode befindet sich in einem memo und um diese stelle geht es:
Code:
<h1 itemprop="name">DIESESWORT</h1>
danke schonmal
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#2

AW: wort zwischen 2 zeichen rauskopieren

  Alt 2. Aug 2014, 07:29
In diesem Fall:
Man nehme einen HTML- oder XML-Parser und lasse sich von Diesem den gewünschten Text geben.


Ansonsten:
Delphi-Referenz durchsuchenPos, Delphi-Referenz durchsuchenPosEx (nicht PoSex) und Delphi-Referenz durchsuchenCopy kennst du aber?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: wort zwischen 2 zeichen rauskopieren

  Alt 2. Aug 2014, 07:30
Hmmm, eine Funktion die ein Delphi-Referenz durchsuchenTMemo ausliest und das Ergebnis direkt in ein Delphi-Referenz durchsuchenTEdit oder Delphi-Referenz durchsuchenTMemo schreibt und ist eher selten anzutreffen.

Dürfte es auch eine Funktion sein, die einen string als Parameter entgegennimmt und einen string zurückliefert?
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
RuSsAk

Registriert seit: 18. Jan 2008
39 Beiträge
 
#4

AW: wort zwischen 2 zeichen rauskopieren

  Alt 2. Aug 2014, 07:54

Dürfte es auch eine Funktion sein, die einen string als Parameter entgegennimmt und einen string zurückliefert?

ja das würde auch gehen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#5

AW: wort zwischen 2 zeichen rauskopieren

  Alt 2. Aug 2014, 07:58
Hmmm, eine Funktion die ein Delphi-Referenz durchsuchenTMemo ausliest ... und einen string zurückliefert?
TMemo.SelText (statt des Copy), aber sonst bleibt das Vorgehen dennoch gleich.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
RuSsAk

Registriert seit: 18. Jan 2008
39 Beiträge
 
#6

AW: wort zwischen 2 zeichen rauskopieren

  Alt 2. Aug 2014, 08:20
so hab da was zusammen gewürfelt

Code:
Memo3.Text := Copy(Memo3.Text, Pos('<h1 itemprop="name">', Memo3.Text) + 1, Pos('</h1>', Memo3.Text) - Pos('<h1 itemprop="name">', Memo3.Text) - 1);
bleibt zwar noch "h1 itemprop="name">" aber das is nich so wild lösch ich einfach^^

falls wer was besseres hat immer her damit
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: wort zwischen 2 zeichen rauskopieren

  Alt 2. Aug 2014, 08:31
Hmmm, eine Funktion die ein Delphi-Referenz durchsuchenTMemo ausliest ... und einen string zurückliefert?
TMemo.SelText (statt des Copy), aber sonst bleibt das Vorgehen dennoch gleich.
Ich denke mal wir sind uns einig, dass eine Funktion, die im Wesen eigentlich nur eine String-Manipulation ist, keinen Bezug zu irgendwelchen Controls haben sollte.

Eine Methode, die dann diese Funktion benutzt und die Controls passend zusammen bringt, ja, das ist dann noch ok.

Nur mal so dahergetippt:
Delphi-Quellcode:
function StringBetween( const Str, AfterStr, BeforeStr : string ) : string;
var
  LAfterPos : integer;
  LBeforePos : integer;
begin
  LAfterPos := Pos( AfterStr, Str );
  if LAfterPos = 0 then
    Exit( '' );
  Inc( LAfterPos, Length( AfterStr ) );
  LBeforePos := PosEx( BeforeStr, Str, LAfterPos );
  if LBeforePos < LAfterPos 0 then
    Exit( '' );
  Result := Copy( Str, LAfterPos, LBeforePos - LAfterPos );
end;

procedure TFormX.ExtractSomething;
begin
  Edit1.Text := StringBetween( Memo1.Text, '<h1 itemprop="name">', '</h1>' );
end;
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
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: wort zwischen 2 zeichen rauskopieren

  Alt 2. Aug 2014, 08:35
so hab da was zusammen gewürfelt

Code:
Memo3.Text := Copy(Memo3.Text, Pos('<h1 itemprop="name">', Memo3.Text) + 1, Pos('</h1>', Memo3.Text) - Pos('<h1 itemprop="name">', Memo3.Text) - 1);
bleibt zwar noch "h1 itemprop="name">" aber das is nich so wild lösch ich einfach^^

falls wer was besseres hat immer her damit
Benutze niemals die Controls direkt, sondern überlege, was du wirklich machen möchtest. Sonst stehst du morgen vor dem Problem, wie das denn jetzt mit einem Edit, einer ComboBox, einer ListBox, .... funktioniert.
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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#9

AW: wort zwischen 2 zeichen rauskopieren

  Alt 2. Aug 2014, 08:46
so hab da was zusammen gewürfelt

Code:
Memo3.Text := Copy(Memo3.Text, Pos('<h1 itemprop="name">', Memo3.Text) + 1, Pos('</h1>', Memo3.Text) - Pos('<h1 itemprop="name">', Memo3.Text) - 1);
Mit ein paar Zwischenvariablen wird der Code bestimmt übersichtlicher und es erspart doppelten Code.
Außerdem kann man so besser nachprüfen ob die Berechnung stimmt.
Delphi-Quellcode:
Start := Pos('<h1 itemprop="name">', Memo3.Text);
Ende := Pos('</h1>', Memo3.Text);
Memo3.Text := Copy(Memo3.Text, Start + 1, Ende - Start - 1);
z.B. Start + 1 kann doch wohl nicht ganz stimmen, zumindestens nicht, wenn man nach mehr als nur einem Zeichen sucht, für die Startbedingung.
Start + Delphi-Referenz durchsuchenLength des gesuchten Textes würde wohl eher das richtige Ergebnis liefern.

+1 = <h1 itemprop="name">
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 2. Aug 2014 um 08:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: wort zwischen 2 zeichen rauskopieren

  Alt 2. Aug 2014, 08:50
so hab da was zusammen gewürfelt

Code:
Memo3.Text := Copy(Memo3.Text, Pos('<h1 itemprop="name">', Memo3.Text) + 1, Pos('</h1>', Memo3.Text) - Pos('<h1 itemprop="name">', Memo3.Text) - 1);
Mit ein paar Zwischenvariablen wird der Code bestimmt übersichtlicher und es erspart doppelten Code.
Außerdem kann man so besser nachprüfen ob die Berechnung stimmt.
Delphi-Quellcode:
Start := Pos('<h1 itemprop="name">', Memo3.Text);
Ende := Pos('</h1>', Memo3.Text);
Memo3.Text := Copy(Memo3.Text, Start + 1, Ende - Start - 1);
z.B. Start + 1 kann doch wohl nicht ganz stimmen, zumindestens nicht, wenn man nach mehr als nur einem Zeichen sucht.
Start + Delphi-Referenz durchsuchenLength des gesuchten Textes würde wohl eher das richtige Ergebnis liefern.
Warum gibt es für Anfänger solche Ratschläge? Sollen die dumm gehalten werden?

Wieso zeigt man denen nicht gleich wie man das - gerade in diesem Beispiel sehr einfach umzusetzen - vernünftigerweise machen soll?
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
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 19:31 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