Seite 1 von 1

AddGadgetItemText / EditorGadget

Verfasst: 30.07.2006 10:59
von Gezuppel
Moin moin,
bin gerade dabei mir einen Editor zu bastel und möchte dazu das EditorGadget benutzen.
Dabei habe ich einige Problemchen.
Zunächst wollte ich das Editorgadget mit PureBasicbefehlen "beschicken", öffnete also eine Textdatei und las sie mit ReadString aus. Den gelesenen String schrieb ich mit AddGadgetItemText in das EditorGadget.
Die ins EditorGadget eingelesene Datei schrieb ich nun unter anderem Namen wieder weg, dazu benutzte ich WriteStringN.
Funzt nicht, die Dateien haben unterschiedliche Länge!
Hab folgendes rausgefunden: Wenn ich mit AddGadgetItemText einen String in das EditorGadget schreibe, wird dieser nach ca. 2230 Zeichen abgeschnitten, mal sind es 2230, mal 2238 Zeichen.
Nun sind in der Textdatei Zeilen, die zum Teil mehr als 4500 Zeichen haben.
Zunächst dachte ich nun, das das EditorGadget auf diese Zeichenanzahl pro Zeile begrenzt ist, was sich aber als falsch herrausstellte.
Habe also die Textdatei mit STREAMIN eingelesen und mit STREAMOUT wieder weg.
Siehe die Weggeschriebene Datei ist identisch mit dem Original.
Das nächste Problem ist das das Editorgadget ein "automatischen" Zeilenumbruch macht.
Ich meine nicht den Zeilenumbruch den man mittels SETTARGETDEVICE am Ende des Fensters ein und ausschalten kann, sondern einen Zeilenumbruch nach 1558 Zeichen!
Die Zeile wird dort umgebrochen (nicht abgeschnitten).
Der Microsoft Editor von Windows XP macht bei mir das gleiche allerdings schon nach 1025 Zeichen.
Soweit zu meinen Problemchen, nun auch noch die Fragen:

1) Ist die Begrenzung von Set/Add/GetGadgetItemText bewusst so gemacht oder ein Bug?
Wenn es kein Bug ist, kann ich die Funktion für das EditorGadget zumindest nicht gebrauchen, da mir ja unter Umständen nicht die komplette Zeile übergeben wird.
2) Da der "automatische" Zeilenumbruch des EditorGadgets bei 1558 Zeichen und beim MS-Editor bei 1025 Zeichen weit auseinander liegt, läßt mich vermuten, das sich dies steuerbar ist.
Habe in der API-Referenz gesucht, aber nichts gefunden. Wahrscheinlich bin ich zu blind. Auch im Boar hab ich nichts gefunden
Weis einer von Euch ob und wenn wie das geht?

Verfasst: 30.07.2006 11:53
von DarkDragon
Wieso WriteStringN()? WriteString(GetGadgetText(DeinEditorGadget)) sollte genügen. So entsteht schonmal ein Zeilenumbruch weniger.

Verfasst: 30.07.2006 14:39
von Gezuppel
> Wieso WriteStringN()? WriteString(GetGadgetText(DeinEditorGadget)) sollte genügen. So entsteht schonmal ein Zeilenumbruch weniger.

??? Ich weis, hätte mich oben kürzer fassen sollen, damit das auch einer durchliest :;-)

1) Mit:

Code: Alles auswählen

WriteString(GetGadgetText(MeinEditorGadget))
schreibe ich den kompletten Inhalt des EditorGadgets weg,
wollte aber in dem Fall nur Zeilen wegschreiben.
Deshalb:

Code: Alles auswählen

WriteString(0,GetGadgetItemText(MeinEditorGadget,ItemZeile,ItemSpalte))
Diese Version schrieb mir aber nur ein CR ans Zeilenende.
Hätte jetzt da natürlich noch ein LF dranhängen können, hatte es aber so gemacht:

Code: Alles auswählen

dummy$ = GetGadgetItemText(MeinEditorGadget,ItemZeile,ItemSpalte)
WriteStringN(MeinFileID,dummy$)
2) Das aber ist nicht wirklich das Problem!
Es geht (a) um das Abschneiden des Strings (der Zeile) durch SetGadgetItemText.
Und (b) um den ungewollten Zeilenumbruch bei Spalte 1558.