Fragensteller
Zero Based array an Active X übergeben?

Frage
-
Wir verwenden ein ActiveX Control zur Text-Eingabe (TX Text Control),bei dem jetzt auch eine Rechtschreibkorrektur eingebaut werden soll.Hierfür muss u.a. im SpellCheckText-Event der Parameter"misspelledwordpositions" gesetzt werden.Bei "misspelledwordpositions" handelt es sich um ein Array, in dem diePositionen der fehlerhaften Wörter aufgeführt werden.Hier nochmal die Original-Doku vom Hersteller:MisspelledWordPositions Is an array of Long values which can be used toinform the TextControl about misspelled words. This array must be createdin the event handler after the specified text has been examined.The array must contain two entries for each misspelled word: a startposition and an end position. Both values must be one-based indices inthe specified text. The example text 'This iss an exxample' contains twomisspelled words: 'iss' and 'exxample'. For this example an array of fourLong values must be created containing the values 6, 8, 13, 20.TextControl uses these positions to underline the misspelled words witha red zigzag line.Hier ein vereinfachtes Beispiel des entsprechenden Codes:*** ActiveX Control Event ****SpellCheckText-EventLPARAMETERS text, misspelledwordpositionsLocal loSpellChecker as AxTXSpell.AxTXSpellCheckerloSpellChecker = CreateObject("AxTxSpell.AxTxSpellchecker")=ComArray(loSpellChecker, 10)=ComArray(this, 10)loSpellChecker.Check(text)misspelledwordpositions = loSpellChecker.MisspelledWordPositions=DoDefault(text, @misspelledwordpositions)****************************************************************Das Array misspelledwordpositions ist ein zero-based Array, deshalbhabe ich die ComArray()-Funktion verwendet.Das ganze scheint aber nicht zu funktionieren. Das Array kommtsozusagen nie beim ActiveX Control an.Hat irgend jemand von euch eine Idee, was hier schief geht?Gruß,Frank
Jörg SchneiderMittwoch, 20. März 2013 13:44
Alle Antworten
-
Hast Du schon mal set step on in dem Code benutzt?
Wenn man in VFP Arrayname = wert nutzt, wird jedes Element des Arrays auf den Wert gesetzt. Wenn Wert ein COM Array ist, in Deinem Fall also loSpellChecker.MisspelledWordPositions, dann weiß ich nicht was passiert, aber der Debugger wird's Dir zeigen.
Daneben glaube ich nicht, daß DODEFAULT so gehen würde, wenn dann
=DoDefault(text, loSpellChecker.MisspelledWordPositions)
Tschüß, Olaf.
Olaf Doschke (Setmics)
Mittwoch, 20. März 2013 19:12 -
Hi!Also wir ham uns das jetzt nochmal sehr intensiv angesehen.Selbst wenn wir von Hand ein Array bauen und dann dieses an DoDefault() übergeben passiert nichts.In VB setzt man einfach den 2. Parameter des Events als Array und fertig. Kein DoDefault etc. und schon geht es.In VFP scheint es so, als dass FoxPro nicht richtig erkennt, dass der 2. Parameter des Events ein Referenzparameter ist.Wir wissen nun nicht mehr weiter.GrüßeAm 20.03.2013 20:12, schrieb Olaf Doschke:> Hast Du schon mal set step on in dem Code benutzt?>> Wenn man in VFP Arrayname = wert nutzt, wird jedes Element des Arrays auf den Wert gesetzt. Wenn Wert ein COM Array ist, in Deinem Fall also loSpellChecker.MisspelledWordPositions, dann weiß ich nicht was passiert, aber der Debugger wird's Dir zeigen.>> Daneben glaube ich nicht, daß DODEFAULT so gehen würde, wenn dann>> =DoDefault(text, loSpellChecker.MisspelledWordPositions)>> Tschüß, Olaf.>> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------>> Olaf Doschke (Setmics)>
Jörg SchneiderDonnerstag, 21. März 2013 13:57 -
Selbst wenn wir von Hand ein Array bauen und dann dieses an DoDefault() übergeben passiert nichts.
In VB setzt man einfach den 2. Parameter des Events als Array und fertig. Kein DoDefault etc. und schon geht es.Das es ein Event ist, an dass Du etwas übergibst ist schon zweifelhaft. Ich kenne mich mit dem TX Text Control nicht aus, aber ich würde erwarten, daß beim Aufruf einer Rechtschreibprüfmethode als Rückantwort dieses Event ausgelöst wird und man im 2. Parameter so ein Array vorfindet, nicht es hereingibt.
Wie sieht denn die Nutzung der Rechtschreibprüfung in VB aus?
Tschüß, Olaf.
Olaf Doschke (Setmics)
Freitag, 22. März 2013 12:14