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
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#1

AW: Text aus einem Richedit kopieren

  Alt 9. Apr 2021, 23:54
Na dann nehmen wir halt den Text, aber das wird jetzt eher unübersichtlich:
Delphi-Quellcode:
var
  sText : String;
  sName : String;
  iPos1 : Integer;
  iPos2 : Integer;
  iPos3 : Integer;
  iNr : Integer;
begin
  iNr := 0;
  // Zuerst holen uns wir den gesamten Text
  // und hängen noch 'nen "Trenner" dran,
  // damit wir den für den letzten Wert auch als Abschluss zu Verfügung haben.
  sText := RichEdit.Lines.Text + ': [[';
  // Solange da noch was drinne ist:
  while Length(sText) > 0 do begin
    // Position des momentan ersten "Trenners" ermitteln
    iPos1 := Pos(': [[',sText);
    // und den nächsten "Trenner" dahinter ermitteln.
    iPos2 := PosEx(': [[',sText,iPos1 + 4);
    // Die Namen ... sind zwischen iPos1 und iPos2 zu finden,
    sName := Trim(Copy(sText,iPos1,iPos2 - 1));
    // außer der Name enthält 'nen Zeilenumbruch,
    iPos3 := Pos(#13,sName);
    // dann müssen wir davor abschneiden.
    if iPos3 > 0 then sName := Trim(Copy(sName,1,iPos3 - 1));
    // Nächste Nummer
    iNr := iNr + 1;
    // und in die Ausgabeliste damit.
    Dummy_StringList.Add(Format('%d %s',[iNr,sName]);
    // Alles vor dem nächsten "Trenner" abschneiden
    sText := Copy(sText,iPos2,Length(sText);
    // und weiter geht's mit dem Nächsten.
  end;
end;
Achtung: Ungetestet, nur als Ansatz für 'ne Idee gedacht.
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

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

AW: Text aus einem Richedit kopieren

  Alt 10. Apr 2021, 01:17
Vielen Dank. Das funktioniert, wie ich es benötige.

Doch zurück zum Thema, warum funktioniert das nicht über FindText vom Richedit?
Mathias
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#3

AW: Text aus einem Richedit kopieren

  Alt 10. Apr 2021, 01:41
Das Ergebnis sieht so aus, als wäre in der Logik zu Bestimmung von StartPos, EndPos und irgendwie die Längenbestimmung für SelText nicht in Ordnung.

Bei der momentanen Logik wird wohl die StartPos in 'ner anderen Geschwindigkeit verändert, als EndPos und dadurch SelText immer länger.
Aber irgendwie blicke ich da nicht durch.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: Text aus einem Richedit kopieren

  Alt 10. Apr 2021, 02:06
vielleicht der klassiker, ein "with" fehler ?
schonmal aus post #1 probiert ohne "with" zu realisieren?
(habs nicht getestet, nur so ein gedanke...)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

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

AW: Text aus einem Richedit kopieren

  Alt 10. Apr 2021, 02:44
vielleicht der klassiker, ein "with" fehler ?
schonmal aus post #1 probiert ohne "with" zu realisieren?
(habs nicht getestet, nur so ein gedanke...)
Daran hatte ich noch nicht gedacht, aber das war auch nicht der Fehler.


Mittlerweile funktioniert es ja. Delphi.Narium hat mir mit seinem Code sehr geholfen.

Im Anhang meine Form, weshalb ich das überhaupt gemacht habe. Sollte jemand noch bessere Lösungen finden, lasst es uns bitte wissen
Anmerkung: Es werden 3 Dateien benötigt, damit der Download von Wikipedia klappt: libeay32.dll, openssl.exe und ssleay32.dll
zu finden hier: http://docwiki.embarcadero.com/RADSt...ney/en/OpenSSL oder hier: https://www.openssl.org/source/

LG Mathias
Angehängte Dateien
Dateityp: zip Unit_ImportFromWWW.zip (3,8 KB, 6x aufgerufen)
Mathias

Geändert von NoGAD (10. Apr 2021 um 03:03 Uhr) Grund: Nachtrag SSL
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
144 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Text aus einem Richedit kopieren

  Alt 13. Apr 2021, 10:05
Sollte jemand noch bessere Lösungen finden, lasst es uns bitte wissen
Das Beispiel schreit doch förmlich nach einer regular Expression:
Code:
(?<=\[\[).*(?=\]\])
Hier kannst du das Ganze mit deinen Daten testen.
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

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

AW: Text aus einem Richedit kopieren

  Alt 13. Apr 2021, 11:13
Sollte jemand noch bessere Lösungen finden, lasst es uns bitte wissen
Das Beispiel schreit doch förmlich nach einer regular Expression:
Code:
(?<=\[\[).*(?=\]\])
Hier kannst du das Ganze mit deinen Daten testen.

Hallo shebang,

das war zwischenzeitlich tatsächlich auch eine Idee, der ich nachgehen wollte - jedoch aus Nichtwissen, wie Regular Expressions aufgebaut sind - wieder verworfen habe.

Regular Expressions sind einfach grauenhaft. Mir erschließt sich nicht im Ansatz, wie man sich an so einer Zeichenfolge erfreuen kann - und, wie man diese erstellt.
Und ja, ich habe viele Erklärungen gelesen - aber nicht verstanden. Das ist wie höhere Mathematik für einen normalen Drittklässler. Da kann man noch so viel versuchen zu erklären - es wird nichts helfen.

Übrigens, die RegExp, die Du mir gegeben hast, findet nur die Namen. Die Jahreszahlen müssten auch noch mit rein


LG Mathias.
Mathias
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Text aus einem Richedit kopieren

  Alt 13. Apr 2021, 12:27
Es gibt schöne Online-Tools, die geben eine detailierte Erklärung zur verwendeten RexExp, zusätzlich viele Hilfen
und vorallem eine Testumgebung.
z.B. regex101.com

Lookarounds sind für Viele auch bissl schwer zu verstehen.
Im Prinzip ist das eine Suche, die aber im Endergebnis nicht enthalten sein wird.
https://regex101.com/r/bVLk5d/1
(?<=\[\[).*(?=\]\]) sagt eigentlich nur suche nach "[[" und "]]" und gib mir Alles dazwischen .

Da du hier aber zwei Dinge finden willst, ist das eh unnötig kompliziert und garnicht nutzbar. (denn der Teil zwischen den beiden Suchstückchen kann/muß ja im Match drin sein)
https://regex101.com/r/Y3lNbp/1
\[\[(.*)\]\] \((.*)\)
Suche nach "[[" , "]] (" und ")" nimm das dazwischen mit und gib mir das, was innerhalb der Gruppen (...) steht.
Hier steht das Ergebnis dann zwar nicht direkt im "Match"-String drin, aber in den Groups kannst du alles finden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (13. Apr 2021 um 12:40 Uhr)
  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 03:26 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