AGB  ·  Datenschutz  ·  Impressum  







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

Text aus einem Richedit kopieren

Offene Frage von "KodeZwerg"
Ein Thema von NoGAD · begonnen am 9. Apr 2021 · letzter Beitrag vom 13. Apr 2021
Antwort Antwort
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Text aus einem Richedit kopieren

  Alt 13. Apr 2021, 15:03
Hallo ihr Lieben!


Seid mir bitte nicht böse, aber Reguläre Ausdrücke verstehe ich einfach nicht. Das ist mir zu kompliziert, zu abstrakt.
Nebenbei: 3 verschiedene Versionen von RegExp? ::
Außerdem ist es hier für mein aktuelles Anliegen nicht nutzbar, wie ich meine.

@Delphi.Narium:
Sehr gut formuliert, damit konnte ich was anfangen.
Das kam bei mir raus. Erfüllt es die Anforderungen?
Leider nicht. Es fehlt eine Abfrage, ob der String überhaupt genutzt werden soll.

Das ist ein Ausschnitt des Textes, welchen ich versuche zu parsen: (HTML-Quellcode von https://de.wikipedia.org/w/index.php.../A&action=edit )

Code:
<!DOCTYPE html>
<html class="client-nojs" lang="de" dir="ltr">
<head>
<meta charset="UTF-8"/>


[COLOR="Yellow"]{ Schnipp Schnapp, hier habe ich viel HTML gelöscht }[/COLOR]


id="wpScrolltop" type="hidden" name="wpScrolltop"/><input type="hidden" value="d41d8cd98f00b204e9800998ecf8427e" name="wpAutoSummary"/><input type="hidden" value="0" name="oldid"/><input type="hidden" value="210416705" name="parentRevId"/><input type="hidden" value="text/x-wiki" name="format"/><input type="hidden" value="wikitext" name="model"/><textarea aria-label="Wikitext-Editor" tabindex="1" accesskey="," id="wpTextbox1" cols="80" rows="25" style="" class="mw-editfont-monospace" lang="de" dir="ltr" name="wpTextbox1">__NOTOC__

{{SubTOC|Titel=Liste von Autoren|Index=Liste von Autoren}}


[COLOR="Red"]{ Ab hier besteht mein Interesse, alle Angaben heraus zu filtern }[/COLOR]
[COLOR="red"]{ Ich benötige dazu die Namen, Die Jahresangaben und das Land (Alle Werte, soweit verfügbar)}[/COLOR]


== Aa ==
: [[Bertus Aafjes]] (1914&#8211;1993), NL
: [[Jeppe Aakjær]] (1866&#8211;1930), DK
: [[Johannes Aal]] (um 1500&#8211;1551), CH
: [[Hans Aanrud]] (1863&#8211;1953), NO
: [[Emil Aarestrup]] (1800&#8211;1856), DK
: [[Soazig Aaron]] (* 1949), FR
: [[Ivar Aasen]] (1813&#8211;1896), NO

== Ab ==
: [[Petrus Abaelardus]] (1079&#8211;1142), FR

{[.. ff ..]}
Im Weiteren Verlauf parse ich dann diesen Text, um ein Array zu bilden, um dann dies zu bekommen:

Delphi-Quellcode:
  Authors_German: array [1 .. 3711, 1 .. 3] of string = (
    (('Bertus Aafjes'), ('1914–1993'), ('NL')),
    (('Jeppe Aakjær'), ('1866–1930'), ('DK')),
    (('Johannes Aal'), ('um 1500–1551'), ('CH')),
    (('Hans Aanrud'), ('1863–1953'), ('NO')),
    (('Emil Aarestrup'), ('1800–1856'), ('DK')),
    (('Soazig Aaron'), ('1949'), ('FR')),
    (('Ivar Aasen'), ('1813–1896'), ('NO')),
    (('Petrus Abaelardus'), ('1079–1142'), ('FR')),

[COLOR="Yellow"]{ Schnipp Schnapp }[/COLOR]


Und nochmal der Hinweis: Es funktioniert ja inzwischen, Dank der Hilfe von Delphi.Narium.

Der Code für das Kopieren der Namen ist folgende funtion:

Delphi-Quellcode:
function TForm6.SearchForText(sText: String; SearchTextA, SearchTextB: string; var Dummy_StringList: TStringList): boolean;
var
  sName: String;
  iPos1: Integer;
  iPos2: Integer;
  iPos3: Integer;
begin
  { -- THX@Delphi.Narium und KodeZwerg https://www.delphipraxis.net/1486806-post5.html -- }
  if (Pos(SearchTextA, sText) = 0) or (Pos(SearchTextB, sText) = 0) then
    exit;
  sText := sText + SearchTextB;
  Dummy_StringList.Clear;
  try
    while (sText.Length > 0) and (sText <> SearchTextB) do
    begin
      iPos1 := Pos(SearchTextA, sText);
      iPos2 := Pos(SearchTextB, sText, iPos1 + Length(SearchTextA));
      sName := Trim(Copy(sText, iPos1, iPos2 - 1));
      iPos3 := Pos(slinebreak, sName);
      if iPos3 > 0 then
        sName := Trim(Copy(sName, 1, iPos3 - 1));
      if (sName.Length > 0) and (sName <> SearchTextA) and (sName <> SearchTextB) then
        Dummy_StringList.Add(sName);
      sText := Copy(sText, iPos2, Length(sText));
    end;
  finally
    result := true;
  end;
end;

// Aufruf der Function:

var
  Dummy_StringList: TStringList;
  Dummy_String: String;
begin

  RichEdit2.Clear;
  Dummy_StringList := TStringList.Create;

  Dummy_String := RichEdit1.Text;
  if SearchForText(Dummy_String, Author_From, Author_From, Dummy_StringList) then
    RichEdit2.Lines.AddStrings(Dummy_StringList);

  Dummy_StringList.Free;

end;

LG Mathias
Mathias
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Text aus einem Richedit kopieren

  Alt 13. Apr 2021, 15:14
@Delphi.Narium:
Sehr gut formuliert, damit konnte ich was anfangen.
Das kam bei mir raus. Erfüllt es die Anforderungen?
1. Leider nicht. Es fehlt eine Abfrage, ob der String überhaupt genutzt werden soll.
2. Und nochmal der Hinweis: Es funktioniert ja inzwischen, Dank der Hilfe von Delphi.Narium.
1. ich habe etwas erstellt was Delphi.Narium als aufgabe formulierte da ich mit deinem text nicht klar kam.
2. das klingt super, dann ist das thema ja durch und man braucht sich keine weiteren gedanken mehr machen
Gruß vom KodeZwerg
  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 05:09 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