Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   wort zwischen 2 zeichen rauskopieren (https://www.delphipraxis.net/181285-wort-zwischen-2-zeichen-rauskopieren.html)

RuSsAk 2. Aug 2014 07:16

wort zwischen 2 zeichen rauskopieren
 
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:thumb:

himitsu 2. Aug 2014 07:29

AW: wort zwischen 2 zeichen rauskopieren
 
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?

Sir Rufo 2. Aug 2014 07:30

AW: wort zwischen 2 zeichen rauskopieren
 
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
Delphi-Quellcode:
string
als Parameter entgegennimmt und einen
Delphi-Quellcode:
string
zurückliefert?

RuSsAk 2. Aug 2014 07:54

AW: wort zwischen 2 zeichen rauskopieren
 
Zitat:

Zitat von Sir Rufo (Beitrag 1267324)

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


ja das würde auch gehen:thumb:

himitsu 2. Aug 2014 07:58

AW: wort zwischen 2 zeichen rauskopieren
 
Zitat:

Zitat von Sir Rufo (Beitrag 1267324)
Hmmm, eine Funktion die ein Delphi-Referenz durchsuchenTMemo ausliest ... und einen
Delphi-Quellcode:
string
zurückliefert?

TMemo.SelText :mrgreen: (statt des Copy), aber sonst bleibt das Vorgehen dennoch gleich.

RuSsAk 2. Aug 2014 08:20

AW: wort zwischen 2 zeichen rauskopieren
 
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:P

Sir Rufo 2. Aug 2014 08:31

AW: wort zwischen 2 zeichen rauskopieren
 
Zitat:

Zitat von himitsu (Beitrag 1267326)
Zitat:

Zitat von Sir Rufo (Beitrag 1267324)
Hmmm, eine Funktion die ein Delphi-Referenz durchsuchenTMemo ausliest ... und einen
Delphi-Quellcode:
string
zurückliefert?

TMemo.SelText :mrgreen: (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;

Sir Rufo 2. Aug 2014 08:35

AW: wort zwischen 2 zeichen rauskopieren
 
Zitat:

Zitat von RuSsAk (Beitrag 1267328)
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:P

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.

himitsu 2. Aug 2014 08:46

AW: wort zwischen 2 zeichen rauskopieren
 
Zitat:

Zitat von RuSsAk (Beitrag 1267328)
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. :zwinker:
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.
Delphi-Quellcode:
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">

Sir Rufo 2. Aug 2014 08:50

AW: wort zwischen 2 zeichen rauskopieren
 
Zitat:

Zitat von himitsu (Beitrag 1267334)
Zitat:

Zitat von RuSsAk (Beitrag 1267328)
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. :zwinker:
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.
Delphi-Quellcode:
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? :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr.
Seite 1 von 2  1 2      

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