Autor | Thema: Bug? @getstring$ mit langen Strings | | Datum:10.07.01 13:44 
(oliver.hahn@landratsamt-ansbach.de) | |
'Hallo liebe Profaner, Hallo Herr Hülsmann,
'
'ein Profanprogramm zur Archivierung von
'Auszahlungen läuft hier seit ca. 2 Jahren.
'Es wurde eine kleine Änderung nötig und
'dabei wurde der Code (ursprünglich in Profan
'5/6) mit der Version 7 compiliert.
'Nun tritt ein seltsamer Fehler auf:
'Strings in einer Listbox sollen in eine
'Textdatei geschrieben werden. Früher wurden
'alle Strings bei 255 bytes abgeschnitten.
'Jetzt enthält die Listbox (sowohl die allgmeine
'als auch definierte Listboxen) auch längere
'Strings vollständig (schön) aber @getstring$
'gibt bei Strings >255 bytes nur Leerstrings
'aus (unschön).
'
'Anbei ein kleiner Code mit dem sich das Problem
'unter Profan7 nachvollziehen läßt.
'
'Sollte getstring nicht auch lange Strings lesen
'können? Oder gibt es eine einfache Alternative?
'
'Vielen Dank
'
'Oliver
'
cls
decimals 0
declare c%,ziel$
declare ctrl%
'Listbox füllen
clearlist
addstring "111111111111111111111111111111111111\
11111111111111111111111111111111111111111111111\
1111111111111111"
addstring "222222222222222222222222222222222222\
22222222222222222222222222222222222222222222222\
22222222222222222222222222222222222222222222222\
22222222222222222222222222222222222222222222222\
22222222222222222222222222222222222222222222222\
2222222222222222222222222"
addstring "333333333333333333333333333333333333\
33333333333333333333333333333333333333333333333\
33333333333333333333333333333333333333333333333\
33333333333333333333333333333333333333333333333\
33333333333333333333333333333333333333333333333\
33333333333333333333333333333333333333333333333\
33333333333333333333333333333333333333333333333\
33333333333333333333333333333333333333333333333\
33333333333333333333333333333333333333333333333\
33333333333333333333333333333333333333333333333\
3333333333333333333333333333333333333333"
'Größen:
'11111... => 100 bytes
'22222... => 250 bytes
'33333... => 500 bytes
print "getcount: ";%getcount
@listbox$("",1)
'Problem:Ziel schreiben über weitere Listbox -
'große Strings werden verschluckt
'Dies ist die von mir bevorzugte Methode, zur
'besseren Übersicht werden die Inhalte in
'definierte Listboxen mit Handle übertragen.
'In der ProfanVersion 6 wurden die Strings beim
'Übertragen in die Liste bei 255 abgeschnitten,
'das war zwar nicht so schön aber für die
'Anwendung nicht wirklich störend.
'Ich habe den gleichen Code mit 7.0 compiliert
'und nun werden lange Strings zwar komplett in
'die Listboxen eingelesen, sind aber leider mit
'der @getstring$-Funktion gar nicht mehr
'auszulesen. Für den Moment habe ich mich mit
'direktem Auslesen der allgemeinen Listbox
'beholfen, 'da in dem Programm aber die
'allgemeine Listbox sehr häufig für
'verschiedene Zwecke genutzt wird
'wäre es schön, wenn @getstring$ (ist
'vermutlich verantwortlich) richtig mit
'definierten Listboxen zusammenarbeiten würde.
ctrl%=@createlistbox(%hwnd,"",0,0,0,0)
print "Move: ";@movelisttolist(ctrl%)
ziel$="c:\\test.txt"
assign #1,ziel$
rewrite #1
c%=0
whilenot @equ(c%,@getcount(ctrl%))
Print "Satz ";c%;": ";@getstring$(ctrl%,c%)
Print #1,@getstring$(ctrl%,c%)
inc c%
wend
Close #1
'Ende
Print "Ende mit Taste."
waitkey
end
|
| | Datum: 10.07.01 15:29 
(rgh-soft@t-online.de) | |
Hilfe, da habe ich doch bei der Umstellung auf lange Strings tatsächlich noch eine Stelle übersehen (und es ist noch niemandem aufgefallen)! SORRY! Wird in 7.5 behoben sein.
Ein Workaround, damit es wenigstens wie bisher funktioniert: Die Strings vor dem Einstellen in die Listbox auf 255 Zeichen begrenzen.
|
|
|