Wie den TextCursor in einer HTML-Seite positionieren?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Wie den TextCursor in einer HTML-Seite positionieren?

Beitrag von balu »

Hallo liebe Basic Spezialisten.

Bis jetzt kam ich ja mit meinem bescheidenen StarBasic Wissen schon recht weit, besonders wenn es um einfache Aufgaben in Calc ging. Doch nun muss ich mich wohl mit Textfunktionen auseinandersetzen, wo es bei mir hapert. Ich meine keine Funktionen zur Text (String)manipulation, sondern das was man z.B. im Writer anwendet.

Genauer gesagt:
In einer HTML-Seite möchte ich den TextCursor (so viel habe ich schon mal bei Dannenhöfer herausgefunden) an eine bestimmte Position setzten, um dann von dieser Position "Scheibchenweise" Daten auszulesen. Das auszulesen setzte ich aber in meinem Vorhaben erstmal hinten an, denn wichtiger ist es erstmal für mich den TextCursor an die richtige Stelle zu positionieren.

Nun, den zugriff auf die HTML-Seite bekomme ich ja hiermit.

Code: Alles auswählen

Sub Main

    iZeile = 1
    
    iNumber = Freefile    

    Open sFile For Input As iNumber                
        While not eof(iNumber)            
        Line Input #iNumber, sLine            

            iSchalter = InStr(sLine, ":{")
                If iSchalter > 0 then
                    PRINT "SCHALTER GEFUNDEN"
                    print iZeile 
                end if
            
            iZeile = iZeile +1
          wend                            
    Close #iNumber        

End Sub
Und ich kann mir auch die Zeilennummer ausgeben lassen in welcher Zeile der TextCursor hingesetzt werden soll. Das geschieht durch iZeile.

Beim Dannenhöfer habe ich folgendes gefunden.

Code: Alles auswählen

Sub Versuchsobjekt

' folgendes bei Dannenhöfer gefunden: http://www.dannenhoefer.de/faqstarbasic/cursor.html#cursor'

Dim ExternDoc as object
Dim myTextCursor as object
ExternDoc = sFile
mytextCursor = ExternDoc.text.createtextcursor()
mytextcursor.gotoRange(74,false)
'mytextcursor.goleft(6,false) <- Originalzeile bei Dannenhöfer
End Sub
Die 74 bei gotoRange wäre die Zeilennummer wo der TextCursor positioniert werden soll.
Und ja! Ich weis das dies so nicht funktioniert, da sFile ein String und kein Object ist. Aber das ist das Problem 1.1.

Das Prolem 1.0 ist nämlich, wie kann ich diesen Code in den ersten integrieren, um den TextCursor zu positionieren? Die wahrscheinlich logischte Position innerhalb des ersten Code wäre wohl die Stelle mit der -> PRINT "SCHALTER GEFUNDEN" <-, also innerhalb der If-Abfrage.

Jedoch stehe ich da echt Ahnungslos rum, und weiß jetzt nicht wie ich den zweiten Code so umschreiben muss das ich zugriff auf die HTML-Seite bekomme.
Zumal ich ja noch gar nicht weiß ob dies überhaupt der richtige Ansatz ist. Ich weiß wohl das der ViewCursor derjenige ist den man sehen kann, und der TextCursor der Virtuelle Cursor ist den man nicht sehen kann. Und ich denke mir das der TextCursor der richtige ist, da ich ja direkt auf die HTML-Seite zugreife. Und ich bin mir auch gar nicht sicher ob ich mittels gotoRange, so wie ich es geschrieben habe, wirklich die Position setze, oder ob das anders geschrieben werden muss. Wie gesagt, ich bin Ahnungslos. :oops:

Wer kann mir weiterhelfen, damit ich voran komme?

Freue mich schon auf Eure Antworten, und bedanke mich schon mal für Eure Geduld und das lesen meines Beitrags.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Wie den TextCursor in einer HTML-Seite positionieren?

Beitrag von Karolus »

Hallo

Vorweg: Ich glaube und hoffe das du daß nicht wirklich tun willst!

Du verwendest original-Basic-befehle die es schon Anfang der 80er gab, und versuchst da mit Api-TextCursor-blabla rumzuwurschteln???
  • (Text)Dateien öffnet man nicht gleichzeitig zum lesen und schreiben, wenn doch dann nur im Binär-modus und man weiss ganz genau was man tut
  • html kann man vielleicht noch mit etwas Glück mit Basic lesen, aber definitiv nicht schreiben.
…Das auszulesen setzte ich aber in meinem Vorhaben erstmal hinten an…
Aha - was meinst du was du hier tust:

Code: Alles auswählen

iSchalter = InStr(sLine, ":{")
                If iSchalter > 0 then
                    PRINT "SCHALTER GEFUNDEN"
                    print iZeile 
Setz dort mal statt dem sinnfreien "SCHALTER GEFUNDEN" ischalter oder sline ein.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Wie den TextCursor in einer HTML-Seite positionieren?

Beitrag von balu »

Hallo Karolus,

erstmal danke für deine Antwort.
Vorweg: Ich glaube und hoffe das du daß nicht wirklich tun willst!

Du verwendest original-Basic-befehle die es schon Anfang der 80er gab, und versuchst da mit Api-TextCursor-blabla rumzuwurschteln???
Was willst Du mir damit sagen? Ich versteh es nicht.


Nun, ich habe den ersten Code so ähnlich hier im Forum mal gefunden. Und ja, in die deutsche Version von Andrew habe ich auch reingeschaut, und weiß daher das es verschiedene Arten gibt um auf eine Datei zuzugreifen, seis mit Random, Binary etc.. Und ich weiß auch im groben das man mit "For Input" lesen, aber nicht schreiben kann. Dortiges Kapitel: 8.6. Eine Datei öffnen
(Text)Dateien öffnet man nicht gleichzeitig zum lesen und schreiben, wenn doch dann nur im Binär-modus und man weiss ganz genau was man tut
Da bin ich jetzt etwas verwirrt. Bezieht sich diese deine Aussage auf meinen ersten Code, oder auf was genau?
Ich sehe auch nicht das ich bei "For Input" noch Access beigefügt habe. Oder siehst Du das dort?
html kann man vielleicht noch mit etwas Glück mit Basic lesen, aber definitiv nicht schreiben.
Schreiben will ich ja auch gar nicht, sondern nur lesen.


…Das auszulesen setzte ich aber in meinem Vorhaben erstmal hinten an…
Aha - was meinst du was du hier tust:

Code: Alles auswählen

iSchalter = InStr(sLine, ":{")
                If iSchalter > 0 then
                    PRINT "SCHALTER GEFUNDEN"
                    print iZeile 
Das ist ein anderes "auslesen". Was ich eigentlich mit auslesen meinte ist, wenn ich den TextCursor positionieren kann, dass ich dann ab der Position Daten auslesen will die ich weiterverabeiten möchte. Dieses "auslesen", was Du zitiert hast, dient ja nur um eine Zeilennummer zu bekommen wo ich den TextCursor hinsetzen kann.

Setz dort mal statt dem sinnfreien "SCHALTER GEFUNDEN" ischalter oder sline ein.
Sinnfrei ist sie für mich nicht. Denn dadurch bekam ich bei meinen Tests schon mal die Bestätigung das einerseits das Suchkriterium gefunden wurde, und anderseits die Zeilennummer ausgegeben, die ich im Quelltext mit der dortigen Zeilennummer vergleichen konnte. Und so bin ich auf der sicheren Seite das das Suchkriterium Zeilennumerntechnisch gesehen nicht zu früh gefunden wurde.

Ich weiß was ich beim Einsatz von sline bekomme. Nämlich den Inhalt der Textzeile mit den Suchparameter.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wie den TextCursor in einer HTML-Seite positionieren?

Beitrag von Stephan »

Jedoch stehe ich da echt Ahnungslos rum, und weiß jetzt nicht wie ich den zweiten Code so umschreiben muss das ich zugriff auf die HTML-Seite bekomme.
Du musst die html-Datei mit .LoadComponentFromURL laden aber im Parameter-Array entweder den txt oder txt(kodiert)-Filter angeben, damit quasi der Quelltext der html-Datei als Text sichtbar ist. Der txt(kodiert)-Filter braucht zusätzlich wohl noch Parameter.

Findest Du die ganze Filterdetails selbst im Internet? Sonst muss ichnochmals nachschauen, denn ich habe das nicht im Kopf.

Die Zeilennummer die Du in dem anderen Code ermittelt hast ist dann für dieses Dokument eigentlich nur so zu nutzen das Du mit dem Cursor mitttels .gotoNextParagraph() so oft wie es dir die ermittelte Zeilennummer sagt in den nächsten Absatz springst.
In Kombination beider Makros ist das aber etwas merkwürdig, weil wenn Du das Dokument für die Verwendung des Textcursors ohnehin öffnen musst kannst Du auch direkt im Dokument mit Hilfe der normalen Suchfunkltion suchen. Oder nicht?


Gruß
Stephan
Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Wie den TextCursor in einer HTML-Seite positionieren?

Beitrag von Karolus »

Hallo

Ok - du willst nicht schreiben - da hab ich zuviel reininterpretiert weil du irgendetwas mit TextCursor machen wolltest.

Code: Alles auswählen

Sub Main
sline = "abc der hase {lief im Schnee} rum"
start = instr(sline, "{")+1
lenght = instr(sline, "}") - start
rest = mid(sline,start , lenght )
Print rest
End Sub
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Wie den TextCursor in einer HTML-Seite positionieren?

Beitrag von balu »

Hallo

@Stephan
Du musst die html-Datei mit .LoadComponentFromURL laden ...
[...]
Findest Du die ganze Filterdetails selbst im Internet?
Denke das ich das hinbekomme, wenn nicht, dann sag ich es.

Die Zeilennummer die Du in dem anderen Code ermittelt hast ist dann für dieses Dokument eigentlich nur so zu nutzen das Du mit dem Cursor mitttels .gotoNextParagraph() so oft wie es dir die ermittelte Zeilennummer sagt in den nächsten Absatz springst.
Aahhh! War ich also doch nicht so verkehrt mit meiner Überlegung ob ich da den richtigen Weg gehe mit gotoRange. Das werde ich dann mal testen, aber heute nicht mehr.

In Kombination beider Makros ist das aber etwas merkwürdig, weil wenn Du das Dokument für die Verwendung des Textcursors ohnehin öffnen musst kannst Du auch direkt im Dokument mit Hilfe der normalen Suchfunkltion suchen. Oder nicht?
Theoretisch ja, ABER .... dazu sage ich gleich noch etwas in der Antwort für Karolus.
Bis hier hin schon mal ein Danke schön für das "Licht ins dunkle bringen".




@Karolus
da hab ich zuviel reininterpretiert ...
Macht nix. Hats halt ein kleines Verständigungsproblem gegeben.

... weil du irgendetwas mit TextCursor machen wolltest.
Mit dem TextCursor will ich ja auch was machen, so wie schon erklärt. Jedoch ist die Sachlage viel komplizierter als ich es bis jetzt geagt habe. Und von daher sage ich jetzt schon mal das dein Beispielcode wohl nicht funktionieren wird, ohne das ich ihn momentan getestet habe. Was ich aber nachher dennoch versuchen werde.

Ich habe mir schon ein Tool in StarBasic erstellt, mit dem ich von einer bestimmten Web-Site Daten auslese, bearbeite und in Calc speichere. Das funktioniert wunderbar, auch wenn das bearbeiten der ausgelesenen Daten ein enormer Kraftakt ist, aber es funktioniert.

Nun dachte ich das ich das gleiche Tool auch für eine andere Seite leicht umgeschrieben benutzen kann, da eine gewisse Pa­r­al­le­li­tät existiert. Und diese Pa­r­al­le­li­tät ist die, das alle Daten die ich auslesen und verarbeiten will in einer Zeile in einem einzigen String stehen. Nicht jede Web-Site ist so aufgebaut, es gibt auch Ausnahmen, oder soll ich lieber sagen das die betroffenen Seiten die Ausnahmen sind? Egal, ändern kann ich das nicht.

Das Dumme ist nur, das die Web-Site die ich jetzt auslesen will StarBasic vor einem, und das kann man nun wahrlich Wort wörtlich nehmen, sehr großem Problem stellt. Denn die vorhandene Datenmenge pro Textzeile überschreitet die zulässige Größe eines Strings von ca. 65.000 Zeichen um so einiges. Ich kann damit rechnen das die Textzeile (der einzulesende String) so bei ca. 78.900 Zeichen liegen kann, mal etwas mehr, mal etwas unter den 65.000.

Bei der Web-Site wo mein Tool schon bestens funktioniert, ist die Datenmenge bedeutend weniger, da sie irgendwie leichter und "einfacher" aufgebaut ist, auch wenn dort alles in einer Zeile steht. Und da arbeite ich auch mit normalen Suchfunktion wie z.B. FindPartString.

Da jetzt also bei der anderen Web-Site FindPartString versagt, wegen der maximal zulässigen Grenze eines Strings, dachte ich mir das ich den TextCursor an den Anfang der Textzeile setze, und dann in Etappen den Text einlese. Und aus diesem Grunde hatte ich

Code: Alles auswählen

iSchalter = InStr(sLine, ":{")
eingebaut um festzustellen ob das auch wegen der 65.000er Grenze versagt. Es versagt nicht. Es gibt mir die Zeilennummer aus, zumal das Suchkriterium auch weit am Anfang der Zeile steht.
So im groben kurz beschrieben.


Kurz erklärt was ich eigentlich da so treibe.
Da ich für mein Hobby (Metall Zerspanung) bestimmte Sachen brauche, wie z.B. Schrauben, Rohmaterial etc., will ich mir die Daten lokal speichern um dann in aller Ruhe offline eine Bestelliste Planen und zusammenstellen. Wo ich auch sehr wichtige Daten wie z.B. das Gewicht immer im Blickfeld habe, da ab einem bestimmten Gewicht sich die Versandkosten ändern. Das ist wohl so gesehen nix illegales, oder anrüchiges.


So, und nun werde ich mal in Ruhe die neuen Infos und Tipps von Stephan ausprobieren. Ich werde mich dann bei Erfolg oder Misserfolg wieder melden.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Hiker
******
Beiträge: 591
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Wie den TextCursor in einer HTML-Seite positionieren?

Beitrag von Hiker »

Hallo,
balu hat geschrieben: Denn die vorhandene Datenmenge pro Textzeile überschreitet die zulässige Größe eines Strings von ca. 65.000 Zeichen um so einiges. Ich kann damit rechnen das die Textzeile (der einzulesende String) so bei ca. 78.900 Zeichen liegen kann, mal etwas mehr, mal etwas unter den 65.000.
Du könntest versuchen in einem ersten Durchlauf an unschädlichen Stellen Zeilenumbrüche einzusetzen, da Du die Datei ja schon runterladen willst.
Danach wäre der Weg für Deine Basic-Routine wieder frei.

Ansonsten: Python bietet beachtliche Parse-Möglichkeiten für HTML... (Innerhalb OO/LO hab ich es aber bisher kaum eingesetzt.)

MfG, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Wie den TextCursor in einer HTML-Seite positionieren?

Beitrag von balu »

Moin moin!

Aus diversen Gründen (das Leben verläuft halt leider nicht nach Plan) konnte ich bis jetzt nicht weiter machen, und ich weiß auch noch nicht wann ich wieder Zeit für dies Thema haben werde.


@Jörn
Du könntest versuchen in einem ersten Durchlauf an unschädlichen Stellen Zeilenumbrüche einzusetzen, ...
Das möchte ich momentan nicht machen, da ich den "Mega-String" häppchenweise einlesen will und ihn dabei gleichzeitig von unnützen Ballast befreie um ihn insgesamt zu verkleinern. Dadurch bleibt es wohl bei einem einzigen durchgehenden String, der aber dann nur noch ein Bruchteil der Größe gegenüber dem Ausgangsstring besitzt.

... da Du die Datei ja schon runterladen willst.
Davon habe ich nix gesagt.

Ansonsten: Python bietet beachtliche Parse-Möglichkeiten für HTML...
Ich habe leider Erfahren müssen, das ich Python nicht einsetzen kann, da etwas nachinstalliert werden muss damit Python dementsprechend funktioniert. Und da ich das Tool, wenn es dann richtig funktioniert, auch anderen Anwendern zur Verfügung stellen will die das gleiche Hobby haben wie ich, aber sich mit Office und Python nachinstallation nicht so gut auskennen, möchte ich lieber darauf verzichten. Und deshalb will ich das alles irgendwie mit StarBasic lösen, da dies in LO und AOO Standard ist.

Für mich selber sieht das aber schon anders aus, da besteht schon interesse an Python. Doch das kommt später, wenn ich mit StarBasic mein Ziel erreicht habe.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Wie den TextCursor in einer HTML-Seite positionieren?

Beitrag von komma4 »

balu hat geschrieben:Python nicht einsetzen kann, da etwas nachinstalliert werden muss
Das ist i.d.R. das Gleiche wie nach dem Herunterladen Deines Tools: ein "Doppelklick" auf die Datei.
balu hat geschrieben:mit Office und Python nachinstallation nicht so gut auskennen
Unterschätze mal die Anwender nicht!
Selbst wenn manuell etwas installiert werden müsste.... ein Kind oder Enkel ist meist erreichbar und damit überhaupt nicht überfordert.

Was Du noch nicht beantwortet hast:
wie willst Du mit StarBasic alle Kombinationen aus der Dropdown-Box auslesen und die abhängigen Werte (die durch Javascript eingestellt werden!) ändern lassen?

Ich bleibe dabei: StarBasic ist hier das total falsche Werkzeug

Dir alles Gute und möglichst bald wieder Zeit und Spass für Dein Hobby!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Wie den TextCursor in einer HTML-Seite positionieren?

Beitrag von balu »

Hallo!

Da mein Kopf schon seit längerem mit mir Achterbahn fährt, fällt es mir momentan sehr schwer sehr komplexe Zusammenhänge bezüglich meinem existierendem Tool und was ich vorhabe zu erklären.


@Winfried
Ich fange mal hinten an.
Ich bleibe dabei: StarBasic ist hier das total falsche Werkzeug
Kann durchaus sein. Aber dennoch möchte ich es halt mal probieren, und ob ich damit Erfolg haben werde, oder nicht, ist auch gar nicht so sehr wichtig, da es für mich dabei in StarBasic so einigiges zu lernen gibt. Getreu dem Motto: "Der Weg ist das Ziel"

Was Du noch nicht beantwortet hast:
wie willst Du mit StarBasic alle Kombinationen aus der Dropdown-Box auslesen und die abhängigen Werte (die durch Javascript eingestellt werden!) ändern lassen?
Da gibts wohl ein Missverständnis.
1.
Aus der Dropdown-Box wird nichts direkt ausgelesen.

2.
Abhängige Werte werden nicht geändert.


Zu 1.
Der String den ich auswerten will, beinhaltet alle relevanten Daten die ich anzeigen will. Bei der Seite wo mein Tool schon funktioniert, wird der String vom Tool so bearbeitet, das jeder einzelne auszulesende Datensatz eindeutig identifiziert werden kann. Wobei diese Seite, wo es ja schon funktioniert, von Haus aus auf überflüssige Zusatzinformationen verzichtet die für die Funktion der Web-Seite unnütz sind.

Und bei der Seite um der es mir jetzt geht, sind zu viele Informationen vorhanden, die eigentlich für die Funktion der Web-Seite nicht nötig sind, aber nun mal halt drin stehen. Dafür ist aber schon jeder einzelne Datensatz von Haus aus eindeutig identifizierbar.



Zu 2.
Wie schon gesagt, sollen keine Abhängigkeiten bei der aktuellen Web-Seite geändert werden, sondern lediglich von unnützen Ballast befreit werden.


Oh man oh man! Was habe ich mir nur dabei gedacht?
Das von mir eingesetzte System funktioniert ja schon einmal, aber das jetzt auch noch relativ einfach und verständlich zu Erklären ist ja schwieriger als den von mir erstellten Algorithmus zu programmieren.

Nehmen wir einen Datenstring bei dem das Tool schon funktioniert. Besser geagt, ich zeige jetzt mal 2 aufeinanderfolgende Datensätze innerhalb des Datenstring.

Code: Alles auswählen

><option value='999315101142.4642.931121010101010111m45,854icht3250101g2015-11-25Ohne'>15 x 10 mm</option><option value='999320051142.0142.391121010101010111m44,784icht3150101g2015-11-25Ohne'>20 x 5 mm</
Das sind jetzt also die ersten 2 Datensätze von insgesamt 24 die in einem einzigen String stehen. Hoffentlich versteht man mich noch.

Und in diesem String stehen für 2 verschiedene Abmessungen (15 x 10 und 20 x 5) alle Informationen die das Tool anzeigen lassen kann. Da gibts folgende relevante Punkte:
Abmessungen
Bestellnummer
Bruttopreis
Gewicht
Grundpreis

Klar, ohne die Web-Seite zu kennen wird man mir nicht glauben, das dem so ist. Also zeige ich jetzt die Daten für die erste Abmessung.
Abmessungen: 15 X 10 mm
Bestellnummer: 99931510
Bruttopreis: 2,93
Gewicht: 0,25
Grundpreis: 1 m / 5,85

Da ich aber auf den gezeigten Datenstring so nicht zugreifen kann, muss das Tool ihn erstmal so aufbereiten das jeder Datensatz eindeutig zu identifizieren ist. Und das Ergebnis sieht dann so aus.

Code: Alles auswählen

<option 0#'999315101142.4642.931121010101010111m45,854icht3250101g2015-11-25Ohne'>15 x 10 mm~0><option 1#'999320051142.0142.391121010101010111m44,784icht3150101g2015-11-25Ohne'>20 x 5 mm~1>
Auch wenns nicht danach aussieht, das ist ein einziger durchgehender String. Und, es ist nur der Anfang, die restlichen 22 Datensätze folgen nahtlos hier ran, die ich aber aus Übersichtlichkeitsgründen hier jetzt nicht aufführe.

Wie auch immer. Der String ist jetzt so aufbereitet, das nun das Tool weiß wo ein Datensatz anfängt und wo er aufhört.
Der Anfang wird mit # und das Ende mit ~ gekennzeichnet.
Und jeder Datensatz hat auch seine eigene Nummer, 0 und 1 in diesem Falle.

Code: Alles auswählen

0#'999315101142.4642.931121010101010111m45,854icht3250101g2015-11-25Ohne'>15 x 10 mm~0
Da ich einen Dialog habe in dem eine Listbox das wiederspiegelt was bei der Web-Seite auch der Fall ist, muss diese Listbox ja auch befüllt werden. Und dazu wird ein Array erstellt, welches nur die Daten aufnimmt die zwischen > und ~ stehen.

Und wenn ich jetzt in dieser Listbox einen Eintrag auswähle, dann hat ja dieser ausgewählte Eintrag eine SelectedItempos und die ist mit der Datensatznummer identisch. Und dadurch kann nun auf dem dementsprechenden Datensatz zugegriffen werden.

Für die Bestellnummer ist es noch sehr einfach die Daten auszulesen, da sie immer eine feste Position am Datensatzanfang hat.

Die ersten beiden Punkte (.) stehen einmal für den Nettopreis (2.46) und für den Bruttopreis (2.93). Und ab hier wird es schon mal so langsam aber sicher etwas komplizierter.
Auch wenn es hier nicht ersichtlich ist, so stehen die beiden Punkte nicht immer an der gleichen Stelle. Da ich aber nicht den Netto- sondern nur den Bruttopreis haben will, fische ich mir die Position für den Punkt für den Nettopreis heraus und gehe dann 3 Stellen weiter und lese aus was da für eine Zahl steht. Also die dritte Stelle nach dem Punkt sagt: 4
Und diese 4 bedeutet; nimm 4 Zeichen rechts von mir heraus. Und das wäre dann 2.93

So ähnlich geht es dann weiter für den Grundpreis und für das Gewicht. Wobei die Sache für den Grundpreis noch um einiges komplizierter zu beschreiben ist, da es sich nicht immer um Pro/Meter handelt, sondern auch etwas anderes sein kann. Deshalb lasse ich es sein.


komma4 hat geschrieben:
balu hat geschrieben:mit Office und Python nachinstallation nicht so gut auskennen
Unterschätze mal die Anwender nicht!
Selbst wenn manuell etwas installiert werden müsste.... ein Kind oder Enkel ist meist erreichbar und damit überhaupt nicht überfordert.
Ich möchte jetzt eigentlich keine großartige Diskussion darüber führen, aber glaub es mir bitte, was ich in dem speziellen Forum schon so alles bezüglich Software erlebt habe bestätigt mich darin das alles ohne jegliche nachinstallation zu erledigen wollen.

Sollte ich mein Vorhaben, worum es hier ja eigentlich geht, nicht so hinbekommen wie ich es mir vorstelle, dann lasse ich es eben sein, und gut ist. Dann habe ich zuumindest für mich ein Tool was nur für eine Seite funktioniert, und damit wäre ich auch zufrieden.



gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wie den TextCursor in einer HTML-Seite positionieren?

Beitrag von Stephan »

Deine Erklärung habe ich gelesen, aber ist das die Beschreibung eines gewünschten Zieles oder beschreibt das das was bereits funktioniert?

Wenn Ziel,
dann ist das doch relativ leicht, weil die Daten ganz klar strukturiert sind und die 'Schwierigkeit' ist nur das Du aufgrund Deines Fachwissens genau definieren musst wie die einzelnen Eigenschaften im String 'kodiert' sind, sobald das klar ist ist doch die Zerlegung leicht programmierbar.

Wenn es bereits soweit funktioniert,
verstehe ich nicht was nun noch getan/programmiert werden soll? Sofern es dabei um die Zerlegung der einzelnen Datensätze geht, wo Du ja selber andeutest das wäre etwas kompliziert, so ist doch das Problem dabei nicht eigentlich die Programmierung sondern die schon eingangs genannte Notwendigkeit genau zu definieren wie die einzelnen Eigenschaften kodiert sind.

Beispiel die Abmessung "15 x 10 mm" kann beschrieben sein als:

<zweistellige Zahl><Leerzeichen>x<Leerzeichen><zweistellige Zahl><Leerzeichen>mm

aber auch als:

<irgendeine Zahl><Leerzeichen>x<Leerzeichen><irgendeine Zahl><Leerzeichen>mm

oder vielleicht als:

<irgendeine Zahl><irgendwas was nicht Zahl ist><irgendeine Zahl><irgendwas was nicht Zahl ist>

oder als:

...


Die Schwierigkeit dabei ist es die richtige Definition aufzustellen, denn genau hier sind wir an der Stelle das Computer verdammt schnell rechnen können aber überhaupt keine Intelligenz besitzen, d.h. wenn ich einem Mensch sage:

<zweistellige Zahl><Leerzeichen>x<Leerzeichen><zweistellige Zahl><Leerzeichen>mm

und ihm dann den Ausdruck "15 x 10mm" anbiete, sagt mir der Mensch intuitiv sofort das die Abmessung 15 x 10 ist und in dem Ausdruck "15 x 10mm" ein Schreibfehler vorliegt, eder Computer erkent solche Fehler nur wenn Du zweckmäßig programmiert hast.


Das war nun nur Smalltalk, aber mir ist eben nicht klar wie bei Dir der Stand der Dinge ist.

In Deinem ganz ersten Makro ist die Zeile:

Code: Alles auswählen

iSchalter = InStr(sLine, ":{")
entspricht der Inhalt der Variablen sLine dort den 24 Datensätzen in einer Zeile, d.h. enthält sLine die gesamte Information die Ausgewertet werden soll?

Wenn Ja, böte sich zum Zerlegen doch z.B. an:

Code: Alles auswählen

tmp = Split(sLine, "</option>")
dann hast Du in tmp die 24 einzelnen Datensätze und kannst sie weiter zerlegen. Das sollte dann eigentlich mit Stringprogrammierung gehen ohne das Dokument als Textdokument zu öffnen nur per Cursor zu arbeiten.


Gruß
Stephan
Antworten