SoftMaker.de

Deutschsprachiges Diskussionsforum
Aktuelle Zeit: 24.05.2013 23:15:02

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 55 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4
Autor Nachricht
 Betreff des Beitrags: Re: Dateiübergabe an Textmaker
BeitragVerfasst: 01.08.2009 10:01:59 
Offline

Registriert: 09.03.2009 17:32:30
Beiträge: 470
PeterQ hat geschrieben:
2. Wie kann ich Absätze von hinten her zählen? Mit der Methode " tm.ActiveDocument.Selection.SetRange tm.ActiveDocument.Paragraphs.Item(2).Range.start, tm.ActiveDocument.Paragraphs.Item(2).Range.end" kann ich z.B. die zweite Zeile auswählen. Aber wie kann ich z.B. die vorletzte Zeile auslesen bei variabler Zeilenanzahl?

Manchmal ist der Morgen ergiebiger als der Abend: Meine Lösung:
Zitat:
Dim paragraphs as integer
Die Variable paragraphs als Ganzzahl festlegen und dann
Zitat:
paragraphs = tm.ActiveDocument.Paragraphs.Count
die Zeilenanzahl zählen zu lassen. Von dieser Zahl ziehe ich dann die gewollten Zeilen ab
Zitat:
tm.ActiveDocument.Selection.SetRange tm.ActiveDocument.Paragraphs.Item(paragraphs - 5).Range.start, tm.ActiveDocument.Paragraphs.Item(paragraphs).Range.end
tm.ActiveDocument.Selection.Font.Size = "11"

Frage 1 habe ich allerdings noch nicht gelöst.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Dateiübergabe an Textmaker
BeitragVerfasst: 01.08.2009 19:31:33 
Offline

Registriert: 09.03.2009 17:32:30
Beiträge: 470
PeterQ hat geschrieben:
Beim gestrigen Versuch fror BasicMaker ein und in TM tat sich nur ein Ruckeln. Habe es heute erneut versucht, und es reagierte. Übergabe an TM funktionierte. Woran es gestern lag - keine Ahnung.
Ich zitiere mich mal selber, da ich nun den Zusammenhang erkannte, warum das Skript nicht funktionierte und dann doch wieder. Das Skript wird durch Aufrufen des BasicMakers beendet!
Wenn ich also das Skript gestartet habe und mir BM dann einfriert, schließe ich BM und damit auch die Schleife. Wenn ich an einem anderen Skript was machen möchte, wird jedesmal mein Testskript auch abgebrochen. Und so kamen die Umstände zusammen, die zu meiner Äußerung führten, dass die Verbesserung durch Panosis nicht funktioniere.
Es funktioniert - wenn man eben den oben geschilderten Umstand beachtet, nicht nebenbei weiter mit BasicMaker zu arbeiten. Also hier noch mal vielen Dank an Panosis.

Bleibt jetzt noch das Problem der Suche nach einem bestimmten Wort im Dokument.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Dateiübergabe an Textmaker
BeitragVerfasst: 02.08.2009 13:20:04 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 06.02.2007 14:01:47
Beiträge: 959
Zitat:
Das Skript wird durch Aufrufen des BasicMakers beendet!
Dieses Verhalten habe ich schon vor einiger Zeit gemeldet. Das soll geändert werden, hoffentlich schon in 2010.

Natürlich gibt es Situationen, in denen dieses Verhalten angebracht ist, deshalb wäre es ideal, wenn man das über einen Parameter steuern könnte. Besonders ärgerlich ist das Verhalten, wenn man bei geladenen BM ein Script ausführen will, das über ein Icon oder eine Befehltstaste aufgerufen wird. Hier wird BM geschlossen und das aufgerufenen Script nicht ausgeführt.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Dateiübergabe an Textmaker
BeitragVerfasst: 02.08.2009 14:30:03 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 06.02.2007 14:01:47
Beiträge: 959
Zitat:
Wie kann ich ein bestimmtes Wort auswählen? Mit der Methode "tm.ActiveDocument.Select" kann ich nur den gesamten Inhalt auswählen. Ich möchte allerdings nur ein Wort auswählen.

Theoretisch müsste das über die Funktion
Code:
InStr(Start, String, Suchstring [, IgnoreCase])

möglich sein. Theoretisch deshalb, weil mir keine Möglichkeit einfällt, den Text des Dokumentes in eine Variable (String) einzulesen. Vielleicht hat ein schlauerer Kopf eine Möglichkeit parat.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Dateiübergabe an Textmaker
BeitragVerfasst: 02.08.2009 21:27:10 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 23.04.2008 23:02:12
Beiträge: 1463
Eine Funktion, mit der unmittelbar auf Wortebene gearbeitet werden kann, scheint es zur Zeit in der Tat nicht zu geben.

Wenn es um einzelne Wörter geht, die bekannt sind, ist evtl. etwas mittels SendKeys zu basteln: Suchen/Ersetzen mit entsprechenden Parametern aufrufen und Wort so manipulieren (ggf. auch über Format-Ersetzen u. dgl.).


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Dateiübergabe an Textmaker
BeitragVerfasst: 03.08.2009 08:27:37 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 06.02.2007 14:01:47
Beiträge: 959
Der Einsatz von SendKey scheint problematisch zu sein, wurde schon hier diskutiert

viewtopic.php?f=115&t=10039&start=0


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Dateiübergabe an Textmaker
BeitragVerfasst: 03.08.2009 20:02:19 
Offline

Registriert: 09.03.2009 17:32:30
Beiträge: 470
Wenn mein Sohn nicht das Pythonskript geschrieben hätte, wäre ich bestimmt schon arg verzweifelt. So kann ich es als sportliche Herausforderung annehmen, die Aufgabe vollständig mit BasicMaker lösen zu können. Aber so langsam hat mein Sohn nur ein mitleidiges Lächeln übrig, wenn er meine Bemühungen sieht.

Also das mit der Suche: Ein etwas umständlicher Weg, der fast zum Ziel führen könnte:
Ich benutze die Funktion
Code:
InStr(Start, String, Suchstring [, IgnoreCase])
, so wie Dewes es vorgeschlagen hat und nehme die erzeugte Variable für die Methode
Code:
SetRange Start, End

Allerdings stimmen die Zahlen weder hinten noch vorne. Für alle, die es ausprobieren wollen:
Code:
Dim tm as Object
   Dim x as Object
   Dim i as Integer
   Dim Answer as integer
   Dim A as integer

   ' Mit TextMaker verbinden; TextMaker starten, wenn er noch nicht läuft
   Set tm = CreateObject("TextMaker.Application")

   ' TextMaker sichtbar machen
   tm.Visible = TRUE

   ' TextMaker-Programmfenster maximieren
   tm.WindowState = tmWindowStateMaximize

   ' Fokus auf TextMaker, damit SendKeys auf jeden Fall ans richtige Fenster geht
   tm.Activate

    Open "C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Temp\XXST" For Input As #1   ' Datei öffnen

    While Not EOF(1)               ' Schleife bis Dateiende
    K = Input(3000, #1)         ' 3000 Zeichen lesen
    Wend
   
    A = InStr(2, K, "EPPER-E$S")

    Print A
Close #1                       ' Datei schließen

tm.Documents.Open "C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Temp\XXST", Empty, Empty, Empty, tmFormatPlainTextDOS

tm.ActiveDocument.Selection.SetRange A, A+5

tm.ActiveDocument.saved = True
Die instr Funktion liefert einen Wert, der irgendwo daneben liegt. (TextMakers Statistikfunktion ist für die Überprüfung auch keine Hilfe, da weder Zeichen noch Anschläge eine vergleichbare Zahl liefert.) Oder er liefert den korrekten Wert, aber SetRange zählt anders. Ich habe es nochmal überprüft: SetRange zählt schon richtig. Warum in aller Welt funktioniert es nicht?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Dateiübergabe an Textmaker
BeitragVerfasst: 04.08.2009 11:20:13 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 06.02.2007 14:01:47
Beiträge: 959
Beim OPEN gibst du das Dokument „XXST“ ohne Dateiendung an, ich vermute trotzdem mal, daß es ein TMD Dokument ist. Da du mit INPUT auf Dateiebene einliest, werden zuerst einmal sämtlich TextMaker-spezifischen Steuerzeichen etc. eingelesen. Es stellt sich die Frage, ob dann 3000 Zeichen reichen und wenn, wird nicht die Position im Dokument sondern in der Datei angezeigt. Du kannst dir das ja mal mit einem Hexeditor ansehen.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Dateiübergabe an Textmaker
BeitragVerfasst: 04.08.2009 16:00:21 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 23.04.2008 23:02:12
Beiträge: 1463
Nein, es handelt sich um reinen ASCII-Text (nicht ANSI!).


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Dateiübergabe an Textmaker
BeitragVerfasst: 04.08.2009 16:34:40 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 06.02.2007 14:01:47
Beiträge: 959
dann versuche mal folgendes
Zitat:
K = K & Input(3000, #1)

wenn "K &" fehlt, wird der Inhalt der Variable immer wieder überschrieben., so daß der Anfangstext nicht mehr da ist, sondern nur die letzten 3000 Zeichen


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 55 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de