Thema: Delphi TextSuite will nicht

Einzelnen Beitrag anzeigen

Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#34

Re: TextSuite will nicht

  Alt 4. Jul 2008, 10:50
Ich habe das auch mal auf Windows 2000 ausprobiert und funktionierte ohne Probleme. Wobei ich da auch explizit mal via ProcessExplorer geschaut hatte. Meine Anwendung verwendet die usp10.dll nicht. Also nicht mal indirekt durch andere DLLs. Ich werde das heute Abend noch mal auf anderen System ausprobieren. XP ohne SPs und XP 64bit (wobei die Anwendung trotzdem 32 Bit bleibt). Allerdings denke ich nicht, dass ich auf ein anderes Ergebniss kommen werden. Denn auf diesen Systemen hatte ich das schon reichlich getestet gehabt.

Das das Font innerhalb der Struktur falsche Werte enthält und scheinbar kaputt ist ist absolut richtig. Das dort benutze Record packt einige Felder übereinander. Je nachdem was der ItemTyp für einen Wert hat. Der Typ 3 ist ein Text. Entsprechend ist der Pointer von Font kein TtsFont sondern ein pWideChar. Dafür gibt es aber auch das Feld Word was vom Typ pWideChar ist.

Was mich daran aber mehr wundert. SplitText ist absolut simpel und geht nur Zeichen für Zeichen durch den Text und trennt den Text ins seine Bestandteile. Also Leerzeichen, Tabs, Zeilenumbrüchen etc. Aber diese Methode greift aussließlich auf den Text zu. Bzw. erstellt Kopien der einzelnen Teilstücke. Da wird mit dem Font nichts gemacht. Beim Erstellen des Fonts lese ich ein paar Eigenschaften aus und erst wenn der komplette Text durchgeparst wurde erstelle ich die benötigten Zeichen. In der Zwischenzeit geschiet nichts mit dem Font.

Ein Fehler dort deutet eher darauf hin, dass der Text irgendwie kaputt ist. Was aber dann eigentlich schon bei der Konvertierung von UTF-8 zu Wide hätte auffallen müssen. Du kannst ja auch mal in der TextSuite.inc das Define TS_PURE_PASCAL aktivieren. Damit wird der Assemblercode deaktiviert. Vermute aber das es eher nichts ändern wird. Hattest du da etwas an dem Text verändert? Im Zweifel kannst du auch mal einen konstanten Text ausgeben. Also tsTextOutA('a'); Ansonsten mal bitte das Font löschen und neu installieren. Oder wenn du es auf anderen System testen dann dies bitte auch mal tun.

Aktuell scheint dieses Problem nämlich nur auf deinem System aufzutreten und da sind mir ehrlich gesagt ein bisschen die Hände gebunden.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat