TextMaker Absatz-Inhalt modifizieren mittels BasicMaker

Forum für den Betatest von BasicMaker 2024 für Windows
Antworten
Philipp
Beiträge: 81
Registriert: 10.03.2014 20:38:44

TextMaker Absatz-Inhalt modifizieren mittels BasicMaker

Beitrag von Philipp »

Hallo zusammen,
ist es möglich, mit BasicMaker innerhalb TextMaker auf den Text des Dokumentes (d.h. der Absätze) zuzugreifen?
Konkret:
  1. Nutzer markiert einige Absätze und startet ein BasicMaker Skript
  2. Innerhalb der Markierung erfolgt die Bearbeitung je Absatz
  3. Lese den Absatz Zeichen für Zeichen und finde das erste Leerzeichen.
  4. Ersetze dieses Zeichen durch einen Tab.
Ich habe bisher weder zu 2. noch zu 3. passende Funktionen gefunden.

Freundliche Grüße
Philipp
weisi14
Beiträge: 535
Registriert: 26.01.2012 13:09:18

Re: TextMaker Absatz-Inhalt modifizieren mittels BasicMaker

Beitrag von weisi14 »

In der Hilfe von Basicmaker 2021 nach "ersetzen" Suchen, da wird das ausführlich erklärt:

Suchen und Ersetzen im Script-Editor:
------------------------------------------------
Suchen und Ersetzen im Script-Editor Suchen.
"Mit den Ribbonbefehlen Start | Suchen und Start | Ersetzen können Sie nach einem bestimmten Text im Script suchen beziehungsweise diesen auch gleich durch einen anderen ersetzen lassen."
-------------------------------------------------
Dazu gibt es ja die Hilfe.....
FUM
Beiträge: 195
Registriert: 29.04.2021 17:23:58

Re: TextMaker Absatz-Inhalt modifizieren mittels BasicMaker

Beitrag von FUM »

So wie ich das verstanden habe, will er ja nicht im Script suchen und ersetzten, sondern mittels eines Scriptes in Textmaker Leerzeichen suchen und diese durch Tabs ersetzen.
Philipp
Beiträge: 81
Registriert: 10.03.2014 20:38:44

Re: TextMaker Absatz-Inhalt modifizieren mittels BasicMaker

Beitrag von Philipp »

Hallo FUM,
korrekt, danke für die Klärung. Konkret sind die Schritte 3 und 4 nur einfache Beispiele - ich möchte allgemein den Text eines Absatzes mittels Skript lesen und bearbeiten, d.h. über ein einfaches Suche/Ersetzen hinaus.

Wer weiß was?

Beste Grüße
Philipp
FUM
Beiträge: 195
Registriert: 29.04.2021 17:23:58

Re: TextMaker Absatz-Inhalt modifizieren mittels BasicMaker

Beitrag von FUM »

Scheint nicht zu gehen.
Habe es selber erfolglos versucht und nichts erreicht. Dann habe ich im englischen Forum dies gefunden:
https://forum.softmaker.com/viewtopic.php?t=22832
Philipp
Beiträge: 81
Registriert: 10.03.2014 20:38:44

Re: TextMaker Absatz-Inhalt modifizieren mittels BasicMaker

Beitrag von Philipp »

Hallo FUM,

Danke für den Versuch und die (vermutlich) finale Klärung.

Schade - Zugriff auf den Textinhalt eines Textdokuments wäre doch Kernfunktionalität einer Skriptanwendung. Man kann auf Formularfelder zugreifen, Absätze formatieren - aber nicht den Absatz-Inhalt auslesen. :?

Viele Grüße
Philipp
Benutzeravatar
Get
Beiträge: 231
Registriert: 08.12.2014 13:39:39
Kontaktdaten:

Re: TextMaker Absatz-Inhalt modifizieren mittels BasicMaker

Beitrag von Get »

Hallo,
mit folgendem Skript wird der Inhalt der aktuellen Markierung in eine Stringvariable einglesen, und dann nach dem ersten Auftreten eines Suchstrings durchsucht und dann durch einen Ersatzstring ersetzt. Der veränderte String wird an die Stelle der Textmarkierung zurückgeschrieben. Wenn man das Skript auf dieselbe Markeirung wieder anwendet, wird das nächste Vorkommen gesucht und erstzt, usw.

Code: Alles auswählen

Sub repText

	Dim mSatz, rSatz, wEins, wZwei as String
	Dim sLang, k, n As Integer
	wEins = " "		'Das erste Auftreten dieses Strings wird gesucht (im Bsp. ein Leerzeichen, kann aber eine beliebigen Zeichenkette sein)
	wZwei = Chr(9)	'Der Suchstring wird durch diesen String ersetzt (im Bsp. ein Tabulator, kann aber eine beliebigen Zeichenkette sein)

' ----------------------------------------------Textmaker aktivieren
	Dim tm as Object
	Set tm = CreateObject("TextMaker.Application")
	tm.Application.Visible = True
	tm.Application.WindowState = 3

' -----------------------------------------------Suche in der Markierung das erste Vorkommen von wEins und ersetze es durch wZwei
	
	mSatz = tm.ActiveDocument.Selection.text
	sLang = Len(mSatz)
	k = InStr(1,mSatz,wEins)
	n = k + Len(wZwei)
	rSatz = Left(mSatz,k-1) + wZwei + Mid(mSatz,k+1)
	tm.ActiveDocument.Selection.text = rSatz

' -----------------------------------------------Textmaker deaktivieren

	Set tm = Nothing
End Sub
Ist das ungefähr das, was du gesucht hast? Wenn noch etwas fehlt: Vielleicht kann man das ergänzen.
Gruß
Gerhard
Gerhard Etzel
Autor (gerhard-etzel-buch.de). Meine Bücher wurden alle mit Textmaker geschrieben!
Windows 10, SMO NX Universal 64 Bit Prof.
Intel(R) Core(TM) i5, 16 GB Ram
Benutzeravatar
Get
Beiträge: 231
Registriert: 08.12.2014 13:39:39
Kontaktdaten:

Re: TextMaker Absatz-Inhalt modifizieren mittels BasicMaker

Beitrag von Get »

Ich sehe gerade einen Fehler in meinem Skript:
Die Zeile:
rSatz = Left(mSatz,k-1) + wZwei + Mid(mSatz,k+1)
muss geändert werden in
rSatz = Left(mSatz,k-1) + wZwei + Mid(mSatz,n)
Sonst funktioniert das nur bei einstelligen Suchen/Ersetzen-Strings.
Sorry
Gerhard Etzel
Autor (gerhard-etzel-buch.de). Meine Bücher wurden alle mit Textmaker geschrieben!
Windows 10, SMO NX Universal 64 Bit Prof.
Intel(R) Core(TM) i5, 16 GB Ram
FUM
Beiträge: 195
Registriert: 29.04.2021 17:23:58

Re: TextMaker Absatz-Inhalt modifizieren mittels BasicMaker

Beitrag von FUM »

=D> Wieder was gelernt.

Ein kleines Manko hat das Script noch. Falls der gesuchte String im markierten Text nicht enthalten ist, wird k=0 und das Script bricht bei

rSatz = Left(mSatz,k-1) + wZwei + Mid(mSatz,n)

mit einem Fehler ab (da negativer Parameter für Left).

Das müsste man noch abfangen.

Code: Alles auswählen

	if k=0 Then Goto Beenden:
Benutzeravatar
Get
Beiträge: 231
Registriert: 08.12.2014 13:39:39
Kontaktdaten:

Re: TextMaker Absatz-Inhalt modifizieren mittels BasicMaker

Beitrag von Get »

@FUM
Danke für den Hinweis, ich habe das korrigiert und noch einen Fehler elimiert: wenn die "Suchen/Ersetzen" - Inhalte unterschiedlich lang sind, funktioniert das bisherige Skript nicht. Das ist jetzt verbessert.

Code: Alles auswählen

Sub repText

	Dim mSatz, rSatz, wEins, wZwei as String
	Dim mLang, einsLang, k, n As Integer
	wEins = " "		'Das erste Auftreten dieses Strings wird gesucht (im Bsp. ein Leerzeichen, kann aber eine beliebigen Zeichenkette sein)
	wZwei = Chr(9)	'Der Suchstring wird durch diesen String ersetzt (im Bsp. ein Tabulator, kann aber eine beliebigen Zeichenkette sein)
	einsLang = Len(wEins)
	
' ----------------------------------------------Textmaker aktivieren
	Dim tm as Object
	Set tm = CreateObject("TextMaker.Application")
	tm.Application.Visible = True
	tm.Application.WindowState = 3

' -----------------------------------------------Suche in der Markierung das erste Vorkommen von wEins und ersetze es durch wZwei
	
	mSatz = tm.ActiveDocument.Selection.text
	mLang = Len(mSatz)
	k = InStr(1,mSatz,wEins) 
	if k Then
		n = k + einsLang		
		rSatz = Left(mSatz,k-1) + wZwei + Mid(mSatz,n)
		tm.ActiveDocument.Selection.text = rSatz
	Else
		MsgBox wEins + " nicht gefunden."
	End If
' -----------------------------------------------Textmaker deaktivieren

	Set tm = Nothing
End Sub
@Softmaker
Ich wundere mich schon seit langer Zeit, dass in der BasicMaker-Hilfe nichts davon steht, dass es zu "Selection" ein Objekt "text" gibt.
Ich bin vor Jahren durch den Hinweis eines anderen Nutzers darauf gestoßen.
Gerhard Etzel
Autor (gerhard-etzel-buch.de). Meine Bücher wurden alle mit Textmaker geschrieben!
Windows 10, SMO NX Universal 64 Bit Prof.
Intel(R) Core(TM) i5, 16 GB Ram
FUM
Beiträge: 195
Registriert: 29.04.2021 17:23:58

Re: TextMaker Absatz-Inhalt modifizieren mittels BasicMaker

Beitrag von FUM »

=D>

Get hat geschrieben: 16.06.2023 15:47:59
@Softmaker
Ich wundere mich schon seit langer Zeit, dass in der BasicMaker-Hilfe nichts davon steht, dass es zu "Selection" ein Objekt "text" gibt.
Ich bin vor Jahren durch den Hinweis eines anderen Nutzers darauf gestoßen.
Dem schließe ich mich an. Bin erst durch dieses Script darauf gestoßen.

Was komisch ist: selektiert man den gesamten Text(inklusive der letzten Absatzmarke) liefert "tm.ActiveDocument.Selection.text" offensichtlich keinen Wert zurück. Das führt natürlich dazu, dass das Script keine Ersetzung durchführt, weil "mSatz" leer bleibt. Ich vermutlich ein Bug in SMO.
Antworten

Zurück zu „BETA BasicMaker 2024 für Windows“