Forum | | | | Nico Madysa | Einen Salut allen daraußen.
ca ist qui offizielle successeur hiervon: [...] . Diesmal taucht un très seltsamer faute dans quasi demselben Code sur. Zur Erinnerung sei il encore la fois (dans unwesentlich gekürzter forme) gezeigt: KompilierenMarqueSéparation $H Messages.ph
var id% = 1
Struct CREATESTRUCT = lpCreateParams&, hInstance&, hMenu&, hwndParent&, cy%, cx%, y%, x%, style&, lpszName&, lpszClass&, dwExStyle&
Struct LVCOLUMN = Mask&, FMT&, CX&, Text&, cchTextMaxLen&, Subitem&
Struct LVITEM = IMASK&, ITEM&, ISUBITEM&, State&, StateMask&, ITEXT&, ITEXTMAX&, IIMAGE&, ILPARAM&
proc CreateW
if %pCount > 10
parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&,exstyle&
else
parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&
var exstyle& = 0
endif
var cs# = New(CREATESTRUCT)
With cs#
.lpCreateParams& = SizeOf(cs#)
.hInstance& = hInst&
.hMenu& = if(u_IsMenu(id%),id%,0)
.hwndParent& = pWnd&
.cy% = dy%
.cx% = dx%
.y% = y%
.x% = x%
.style& = style&
.lpszName& = Addr(Name$)
.lpszClass& = Addr(Class$)
.dwExStyle& = exstyle&
EndWith
var handle& = u_CreateWindowExW(exstyle&,Addr(Class$),Addr(Name$),style&,x%,y%,dx%,dy%,pWnd&,id%,hInst&,cs#)
inc id%
ifnot handle&
Class$ = WinError$(%WinError)
MessageBox("Es trat folgender Fehler auf:
" + Class$,"F E H L E R !!!",4096)
endif
Dispose cs#
return handle&
endproc
subproc Create.GridBoxW
parameters pWnd&,def$,stl%,x%,y%,dx%,dy%
declare s$
var hList& = CreateW("SzyzszLzizsztzVzizezwz3z2zzz","",$50000009 + stl%,x%,y%,dx%,dy%,pWnd&,0,%hInstance,$200)
u_SendMessageW(hList&,$1036,0,$00000023)
var LVC# = New(LVCOLUMN)
With LVC#
.Subitem& = 0
.MASK& = $7
whileloop 0,(len(def$,";") 3) - 1
s$ = SubStr$(def$,3*&loop + 1,";")
.TEXT& = Addr(s$)
.FMT& = val(SubStr$(def$,3*&loop + 2,";"))
.CX& = val(SubStr$(def$,3*&loop + 3,";"))
.cchTextMaxLen& = len(s$)
u_SendMessageW(hList&,$1061,&loop,LVC#)
EndWhile
EndWith
Dispose LVC#
return hList&
endproc
proc InsertStringW
parameters pList&,s$,index%
declare ss$
var LVI# = New(LVITEM)
var d$ = Get("ListDel") + "z"
With LVI#
.IMASK&=$1
.ITEM& = index%
whileloop len(s$,d$)
ss$ = SubStr$(s$,&loop,d$)
.iText& = Addr(ss$)
.ITEXTMAX& = len(ss$)
.ISUBITEM& = &loop - 1
ifnot &loop - 1
u_SendMessageW(pList&,$104D,index%,LVI#)
else
u_SendMessageW(pList&,$104C,index%,LVI#)
endif
EndWhile
EndWith
Dispose LVI#
endproc
proc LoadText
parameters d$
declare a$
case d$ = "" : return
Die CSV-Datei wird eingelesen
declare b#,t$,tt$
Dim b#,FileSize(d$)
BlockRead(d$,b#,0,SizeOf(b#))
d$ = Char$(b#,2,SizeOf(b#)-2)
Dispose b#
Die Zeilen werden im Sortier-Listview alphabetisch geordnet
whileloop 0,len(d$,"x0Dzx0Az")-1
a$ = "Mzeziznz;zVzezrzszuzczhz!z"
a$ = SubStr$(d$,&loop+1,"x0Dzx0Az")
WindowTitle Translate$(a$,"z","|")
InsertStringW(hSortDP&,a$,&loop)
InsertStringW(hSortDP&,SubStr$(d$,&loop+1,"x0Dzx0Az"),&loop)
EndWhile
Die Substrings jeder Zeile sind mit einem Semikolon getrennt
Set("ListDel",";")
Das Sortier-Listview wird ins Anzeigelistview übertragen
Aus einer Spalte werden zwei
var LVI# = New(LVITEM)
LVI#.IMASK&= $1
LVI#.ITEXT&= LVI#+36
LVI#.ITEXTMAX& = 200
LVI#.ISUBITEM& = 0
whileloop 0, Getcount(hSortDP&) -1
LVI#.ITEM& = &loop
u_SendMessageW(hSortDP&,$1073,&loop,LVI#)Text auslesen
Dim b#,200
b# = LVI#.iText&
d$ = Char$(b#,0,SizeOf(b#))In Stringvariable schreiben
InsertStringW(hList&,d$,&loop)übertragen
Dispose b#
EndWhile
Dispose LVI#
endproc
declare hUser&,hGDI&,hKrnl&
declare hSortDP&,hList&
cls
var font& = Create("Font","Times New Roman",16,0,0,0,0)
hUser& = ImportDLL("USER32","u_")
hSortDP& = Create("GridBoxW",%hWnd,";0;100",$10,0,0,0,0)
ShowWindow(hSortDP&,0)
hList& = Create("GridBoxW",%hWnd,";0;300;;0;300",$00,0,0,width(%hWnd),height(%hWnd))
SetFont hList&,font&
WindowTitle "Bitte warten, Wortliste wird geladen ..."
Format
LoadText LoadFile$("Testdatei laden","Test.txt")
WindowTitle "Je 100 deutsche und polnische Wörter"
whilenot IsKey(27)
waitinput
wend
FreeDLL hUser&
FreeDLL hGDI&
FreeDLL hKrnl&
DeleteObject font&
end
Viel Text um wenig Seltsames, entscheiden sommes nämlich qui folgenden Zeilen: KompilierenMarqueSéparation
whileloop 0,len(d$,"x0Dzx0Az")-1
a$ = "Mzeziznz;zVzezrzszuzczhz!z"
a$ = $ Substr(d$,&loop+1,"x0Dzx0Az")
Titre de la fenêtre Translate$(a$,"z","|")
InsertStringW(hSortDP&,a$,&loop)
InsertStringW(hSortDP&,$ Substr(d$,&loop+1,"x0Dzx0Az"),&loop)
Endwhile
ici stürzt qui Code dans qui späteren la ligne KompilierenMarqueSéparation sang- et klanglos ab. eh bien qui eigentlich verwunderlichen Beobachtungen: 1. cela Kompilat arbeitet correct. 2. Nehme je pas den le détour sur a$, mais füge den Substring tout de suite un (la ligne 2 et 4 weg, pour la ligne 5), so gibt es keinen faute. 3. Nehme je aucun unterschiedlichen Textes, mais une festen Probetext (la ligne 2 weg, pour la ligne 1), so gibt es également keinen faute. 4. Item fonctionne alles correct, si je qui qui obige la ligne avec Titre de la fenêtre entkommentiere. à qui Prozessorauslastun peux es cependant pas liegen, car füge je anstatt de Titre de la fenêtre Sleep un, so stürzt qui Kode également ab.
cela étions maintenant quatre Wege, cette faute trop tourner autour de. Doch hat irgendjemand une Ahnung, pourquoi il überhaupt auftritt? chacun cette quatre Lösungen (sauf peut-être numéro 3) sollte eigentlich gar aucun Auswirkung avons et doch verhindern vous den Programmabsturz. Dietmar et je sommes avec unserem latin am Ende, doch peut-être voyons 46 Augen plus que 4.
Es verbleibt perplexe
Nico Madysa |
| | | | |
| | Frank Abbing | je serait dire, cela Problem sommes qui Cordes. Unicode-Cordes benutzen comme Endekennung doch deux Nullbytes, Profan eines. |
| | | | |
| | Dietmar Horn | je serait meinen, ici hat Roland encore irgendwas übersehen, quoi im Interpreter zum Absturz führt mais comme Compilat dagegen correct funktioniert.
si cela wirklich seulement à den unterschiedlichen Endekennungen liegen sollte, ensuite müßten pour meinem Verständnis doch alle de Nico durchgespielten Varianten abstürzen, ou bien sich wenigstens im Interpreter et compilé identique verhalten (indépendant en, si toujours Absturz ou bien toujours ne...aucune Absturz).
Salut Dietmar |
| | | Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 10.07.2009 ▲ |
| |
| | Thomas Freier | Alles merkwürdig. qui *.exe erzeugt avec profed32.exe fonctionne par. qui *.exe avec XProfEd32.exe erzeugt bricht ab avec qui Fehlermeldung : la ligne 26, a# pas declariert. a# eingefügt et ca va avec dem ganzen Alphabet plus???
faute peux je pas chercher, là momentan Trabbel avec dem Laptop. DVD-Laufwerk wird seulement encore comme CD-Laufwerk erkannt et qui Tips im WEB et vieille Abbilder konnten cela Problem pas beheben. Beim Aufräumen fand je encore den Anhang (verwendbar?) et KilletSoft Data Conversion Freeware: [...] |
| | | | |
| | | seulement kurz survolés, mais je hoffe, son überseht pas, dass qui Speicherbereich pour qui super pour finissons qui Funktion verflogen ist.
Vlt. besser ici avec z.B. globalAlloc un Handle pour une grenier holen et qui Struktur dareinkopieren. |
| | | | |
| | Nico Madysa | Hmm, encore plus Merkwürdigkeiten: 5. Mir ist aufgefallen, dass LVI# dans InsertStringW am Ende pas disposed wird. alors habe je am Ende Dispose LVI# eingefügt. Ergebnis: Crash. 6. après c'est moi aufgefallen, dass qui benutzte Bereich dans LoadText UND InsertStringW LVI# est, weswegen je ihn dans InsertStringW dans p_LVI# umbenannt habe. Ergebnis: Crash; égal, si p_LVI# disposed wird ou bien pas.
mon eigentliches Problem besteht y, dass espace solcherlei Changements comment z.B. Ausgabe mittels Titre de la fenêtre überhaupt aucun Auswirkungen avons devrait. aussi, dass es im Interpreter hakt et comme Exe durchläuft, peut mich lente croyons, dass qui faute irgendwo dans Profan selbst steckt. Roland wird sich en supplément sicherlich bientôt trop mot annoncer, gell?
@iF: quelle super et quelle Funktion meinst du car? |
| | | | |
| | | Sorry, Strukturen sommes pour mich aussi "nur" Klassen. ^ ^
je mon cs# dans CreateW.
prenez doch nen globalAlloc et kopiert den le contenu de cs# hinein et merkt Euch cela Handle dans z.B. einem dyn.Array et übergebt à u_CreateWindowExW cela Handle statt cs#. (Weil je mir maintenant pas sûrement suis, si u_CreateWindowExW den grenier pour sich sichert ou bien cette volontiers conservé voyons voudrais.)
Wobei je vois grad, Cordes comment class$ devrait pour sortir de qui Funktion ebenso "futsch" son. |
| | | | |
| | Nico Madysa | So, comment je qui Win32.hlp lese, hat cs# gar rien avec qui l'affaire avec qui l'affaire trop 1faire, car c'est seulement un Bereich, qui à qui Message WM_CREATE weitergegeben wird. qui einzigen Nutzen ist, dass cela erstellte Contrôle begreift, quoi c'est. après sollte es eigentlich völlig unnötig son. |
| | | | |
| | Frank Abbing | Stell sûrement, dass deine Cordes überall dans deinem Code am Ende deux Nullbytes avons, wohin toujours du XProfan-Cordes zusammen avec Unicode-Cordes benutzt. Dass es quelquefois funktioniert et quelquefois pas, deutet pour mich puis hin, dass cela pas toujours qui le cas ist. Im Zweifelsfall stattdessen Speicherbereiche verwenden. si du bereich# ou bien GlobalAlloc-Memory benutzt ist eigentlich piepegal. Ist beides cela Gleiche. |
| | | | |
| | Nico Madysa | So, alors je vois, rien, quoi je encore faire peux: KompilierenMarqueSéparation $H Messages.ph
var id% = 1
Struct CREATESTRUCT = lpCreateParams&, hInstance&, hMenu&, hwndParent&, cy%, cx%, y%, x%, style&, lpszName&, lpszClass&, dwExStyle&
Struct LVCOLUMN = Mask&, FMT&, CX&, Text&, cchTextMaxLen&, Subitem&
Struct LVITEM = IMASK&, ITEM&, ISUBITEM&, State&, StateMask&, ITEXT&, ITEXTMAX&, IIMAGE&, ILPARAM&
proc UTF
parameters text$
declare b#
Dim b#,2*len(text$)+2
StringW b#,0 = text$
text$ = Char$(b#,0,SizeOf(b#)-2)
return text$
endproc
proc CreateW
if %pCount > 10
parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&,exstyle&
else
parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&
var exstyle& = 0
endif
Class$ = UTF(Class$)
Name$ = UTF(Name$)
var cs# = New(CREATESTRUCT)
With cs#
.lpCreateParams& = SizeOf(cs#)
.hInstance& = hInst&
.hMenu& = if(u_IsMenu(id%),id%,0)
.hwndParent& = pWnd&
.cy% = dy%
.cx% = dx%
.y% = y%
.x% = x%
.style& = style&
.lpszName& = Addr(Name$)
.lpszClass& = Addr(Class$)
.dwExStyle& = exstyle&
EndWith
var handle& = u_CreateWindowExW(exstyle&,Addr(Class$),Addr(Name$),style&,x%,y%,dx%,dy%,pWnd&,id%,hInst&,cs#)
inc id%
ifnot handle&
Class$ = WinError$(%WinError)
MessageBox(Es trat folgender Fehler auf:
+ Class$,F E H L E R !!!,4096)
endif
Dispose cs#
return handle&
endproc
subproc Create.GridBoxW
parameters pWnd&,def$,stl%,x%,y%,dx%,dy%
declare s$
var hList& = CreateW(SysListView32,,$50000009 + stl%,x%,y%,dx%,dy%,pWnd&,0,%hInstance,$200)
u_SendMessageW(hList&,$1036,0,$00000023)
var LVC# = New(LVCOLUMN)
With LVC#
.Subitem& = 0
.MASK& = $7
whileloop 0,(len(def$,;) 3) - 1
s$ = SubStr$(def$,3*&loop + 1,;)
.TEXT& = Addr(s$)
.FMT& = val(SubStr$(def$,3*&loop + 2,;))
.CX& = val(SubStr$(def$,3*&loop + 3,;))
.cchTextMaxLen& = len(s$)
u_SendMessageW(hList&,$1061,&loop,LVC#)
EndWhile
EndWith
Dispose LVC#
return hList&
endproc
proc InsertStringW
parameters pList&,s$,index%
declare ss$
var LVI# = New(LVITEM)
var d$ = UTF(Get(ListDel))
With LVI#
.IMASK&=$1
.ITEM& = index%
whileloop len(s$,d$)
ss$ = SubStr$(s$,&loop,d$)
.iText& = Addr(ss$)
.ITEXTMAX& = len(ss$)
.ISUBITEM& = &loop - 1
ifnot &loop - 1
u_SendMessageW(pList&,$104D,index%,LVI#)
else
u_SendMessageW(pList&,$104C,index%,LVI#)
endif
EndWhile
EndWith
endproc
proc LoadText
parameters d$
declare a$
case d$ = : return
Die CSV-Datei wird eingelesen
declare b#,t$,tt$
Dim b#,FileSize(d$)
BlockRead(d$,b#,0,SizeOf(b#))
d$ = Char$(b#,2,SizeOf(b#)-2)
Dispose b#
Die Zeilen werden im Sortier-Listview alphabetisch geordnet
whileloop 0,len(d$,x0Dzx0Az)-1
a$ = SubStr$(d$,&loop+1,x0Dzx0Az) DIES IST DIE BETROFFENE ZEILE
InsertStringW(hSort&,SubStr$(d$,&loop+1,x0Dzx0Az),&loop)
EndWhile
Die Substrings jeder Zeile sind mit einem Semikolon getrennt
Set(ListDel,;)
Das Sortier-Listview wird ins Anzeigelistview übertragen
Aus einer Spalte werden zwei
var LVI# = New(LVITEM)
LVI#.IMASK&= $1
LVI#.ITEXT&= LVI#+36
LVI#.ITEXTMAX& = 200
LVI#.ISUBITEM& = 0
whileloop 0, Getcount(hSort&) -1
LVI#.ITEM& = &loop
u_SendMessageW(hSort&,$1073,&loop,LVI#)Text auslesen
Dim b#,200
b# = LVI#.iText&
d$ = Char$(b#,0,SizeOf(b#))In Stringvariable schreiben
InsertStringW(hList&,d$,&loop)übertragen
Dispose b#
EndWhile
Dispose LVI#
endproc
declare hUser&,hGDI&,hKrnl&
declare hSort&,hList&
cls
var font& = Create(Font,Times New Roman,16,0,0,0,0)
hUser& = ImportDLL(USER32,u_)
hSort& = Create(GridBoxW,%hWnd,UTF(Sortieren)+;0;100,$10,0,0,0,0)
ShowWindow(hSort&,0)
hList& = Create(GridBoxW,%hWnd,UTF(Deutsch)+;0;300;+UTF(Polnisch)+;2;300,$00,0,0,width(%hWnd),height(%hWnd))
SetFont hList&,font&
WindowTitle Bitte warten, Wortliste wird geladen ...
Format
Wort1;Wort2
Wort3;Wort4;...
LoadText LoadFile$(Quelldatei laden ...,deupol.txt)
WindowTitle Je 100 deutsche und polnische Wörter (ESC um zu sichern)
whilenot IsKey(27)
waitinput
wend
FreeDLL hUser&
FreeDLL hGDI&
FreeDLL hKrnl&
DeleteObject font&
end
qui kuriose la ligne ist a$ = Substr$(d$,&loop+1,x0Dzx0Az). Ist vous auskommentiert, so fonctionne alles wunderbar, arbeitet vous hingegen avec (quoique vous gar keinen Einfluss avons sollte), so steht dans qui ersten la ligne Aaahen, statt Aachen. je vois mich simple pas imstande, une faute dans einem chaotischen Kode pour trouver. si je pas justement encore par Zufalle puis stoße, suis je wirklich so large, Windows ou bien Profan qui l'affaire dans qui Schuhe trop schieben.
@Frank: Theoretisch devrait qui deux Abschlussbytes sans intérêt son, car qui Listviewmessages verlangen stets qui genaue Pufferlänge, qui dans qui qualité iTextMax& angegeben son muss. vous verlangen aucun Abschlussbytes. pratique habe je, um sûrement pour aller, toutefois folgende la ligne dans InsertStringW geändert: KompilierenMarqueSéparation j'ai dem String, qui unmittelbar à qui Message allez, encore deux Nullbytes hinzugefügt. (et viel plus Unicode-Messages comme dans InsertStringW venons im gesamten Code pas avant.) cela Ergebnis hat mich pas überrascht: Absturz. |
| | | | |
| | | Du devrait peut-être simple pour qui grenier, qui Du pour Stringinhalte utilise et à Apis übergibst, pas XProfan-Cordes verwenden. KompilierenMarqueSéparation |
| | | | |
| | Nico Madysa | Deinem Seelenfrieden zuliebe habe ego getan. KompilierenMarqueSéparation $H Messages.ph
var id% = 1
Struct CREATESTRUCT = lpCreateParams&, hInstance&, hMenu&, hwndParent&, cy%, cx%, y%, x%, style&, lpszName&, lpszClass&, dwExStyle&
Struct LVCOLUMN = Mask&, FMT&, CX&, Text&, cchTextMaxLen&, Subitem&
Struct LVITEM = IMASK&, ITEM&, ISUBITEM&, State&, StateMask&, ITEXT&, ITEXTMAX&, IIMAGE&, ILPARAM&
Def GlobalAlloc(2) !"KERNEL32","GlobalAlloc"
Def GlobalFree(1) !"KERNEL32","GlobalFree"
proc UTF
parameters text$
declare b#
Dim b#,2*len(text$)+2
StringW b#,0 = text$
text$ = Char$(b#,0,SizeOf(b#)-2)
return text$
endproc
proc CreateW
if %pCount > 10
parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&,exstyle&
else
parameters Class$,Name$,style&,x%,y%,dx%,dy%,pWnd&,pid%,hInst&
var exstyle& = 0
endif
Class$ = UTF(Class$)
Name$ = UTF(Name$)
var cs# = New(CREATESTRUCT)
With cs#
.lpCreateParams& = SizeOf(cs#)
.hInstance& = hInst&
.hMenu& = if(u_IsMenu(id%),id%,0)
.hwndParent& = pWnd&
.cy% = dy%
.cx% = dx%
.y% = y%
.x% = x%
.style& = style&
.lpszName& = Addr(Name$)
.lpszClass& = Addr(Class$)
.dwExStyle& = exstyle&
EndWith
var handle& = u_CreateWindowExW(exstyle&,Addr(Class$),Addr(Name$),style&,x%,y%,dx%,dy%,pWnd&,id%,hInst&,cs#)
inc id%
ifnot handle&
Class$ = WinError$(%WinError)
MessageBox("Es trat folgender Fehler auf:
" + Class$,"F E H L E R !!!",4096)
endif
Dispose cs#
return handle&
endproc
subproc Create.GridBoxW
parameters pWnd&,def$,stl%,x%,y%,dx%,dy%
declare s$
var hList& = CreateW("SysListView32","",$50000009 + stl%,x%,y%,dx%,dy%,pWnd&,0,%hInstance,$200)
u_SendMessageW(hList&,$1036,0,$00000023)
var LVC# = New(LVCOLUMN)
With LVC#
.Subitem& = 0
.MASK& = $7
whileloop 0,(len(def$,";") 3) - 1
s$ = SubStr$(def$,3*&loop + 1,";")
.TEXT& = Addr(s$)
.FMT& = val(SubStr$(def$,3*&loop + 2,";"))
.CX& = val(SubStr$(def$,3*&loop + 3,";"))
.cchTextMaxLen& = len(s$)
u_SendMessageW(hList&,$1061,&loop,LVC#)
EndWhile
EndWith
Dispose LVC#
return hList&
endproc
proc InsertStringW
parameters pList&,s$,index%
declare ss$,palloc&
var LVI# = New(LVITEM)
var d$ = UTF(Get("ListDel"))
With LVI#
.IMASK&=$1
.ITEM& = index%
whileloop len(s$,d$)
ss$ = SubStr$(s$,&loop,d$) + "zz"
palloc& = GlobalAlloc($40,len(ss$))
Char palloc&,0 = ss$
.iText& = palloc&
.ITEXTMAX& = len(ss$)
.ISUBITEM& = &loop - 1
ifnot &loop - 1
u_SendMessageW(pList&,$104D,index%,LVI#)
else
u_SendMessageW(pList&,$104C,index%,LVI#)
endif
GlobalFree(palloc&)
EndWhile
EndWith
endproc
proc LoadText
parameters d$
declare a$
case d$ = "" : return
Die CSV-Datei wird eingelesen
declare b#,t$,tt$ , alloc&
Dim b#,FileSize(d$)
BlockRead(d$,b#,0,SizeOf(b#))
d$ = Char$(b#,2,SizeOf(b#)-2)
Dispose b#
Die Zeilen werden im Sortier-Listview alphabetisch geordnet
whileloop 0,len(d$,"x0Dzx0Az")-1
a$ = SubStr$(d$,&loop+1,"x0Dzx0Az") DIES IST DIE BETROFFENE ZEILE
InsertStringW(hSort&,a$,&loop)
EndWhile
Die Substrings jeder Zeile sind mit einem Semikolon getrennt
Set("ListDel",";")
Das Sortier-Listview wird ins Anzeigelistview übertragen
Aus einer Spalte werden zwei
var LVI# = New(LVITEM)
LVI#.IMASK&= $1
LVI#.ITEXT&= LVI#+36
LVI#.ITEXTMAX& = 200
LVI#.ISUBITEM& = 0
whileloop 0, Getcount(hSort&) -1
LVI#.ITEM& = &loop
u_SendMessageW(hSort&,$1073,&loop,LVI#)Text auslesen
Dim b#,200
b# = LVI#.iText&
d$ = Char$(b#,0,SizeOf(b#))In Stringvariable schreiben
InsertStringW(hList&,d$,&loop)übertragen
Dispose b#
EndWhile
Dispose LVI#
endproc
declare hUser&,hGDI&,hKrnl&
declare hSort&,hList&
cls
var font& = Create("Font","Times New Roman",16,0,0,0,0)
hUser& = ImportDLL("USER32","u_")
hSort& = Create("GridBoxW",%hWnd,UTF("Sortieren")+";0;100",$10,0,0,0,0)
ShowWindow(hSort&,0)
hList& = Create("GridBoxW",%hWnd,UTF("Deutsch")+";0;300;"+UTF("Polnisch")+";2;300",$00,0,0,width(%hWnd),height(%hWnd))
SetFont hList&,font&
WindowTitle "Bitte warten, Wortliste wird geladen ..."
Format
"Wort1;Wort2
Wort3;Wort4;..."
LoadText LoadFile$("Quelldatei laden ...","deupol.txt")
WindowTitle "Je 100 deutsche und polnische Wörter (ESC um zu sichern)"
whilenot IsKey(27)
waitinput
wend
FreeDLL hUser&
FreeDLL hGDI&
FreeDLL hKrnl&
DeleteObject font&
end
et je muss dire, dass mich qui Überraschungen toujours moins überraschen. 7. après que je InsertStringW sur GlobalAlloc umgestellt hatte, hatten alle Einträge unsinnige Schwänzchen. 8. après que je ensuite aussi encore qui Einträge jeweils um deux Nullbytes erweitert hatte, hatte es wieder so comment im Original funktioniert. (peux mir irgendeiner den Unterschied entre qui Adresse eines Speicherbereiches avec qui Longueur len(ss$) et qui Adresse eines Profanstrings avec qui Longueur len(ss$) expliquer?) 9. après que je qui seltsame la ligne a$ = Substr$(d$,&loop+1,"x0Dzx0A z") wieder eingefügt habe, hat sich ne...aucune Unterschied ergeben. cet normale Verhalten hat mich de allem am meisten überrascht. 10. là a$ = Substr$(d$,&loop+1,"x0Dzx0A z") gilt, habe je mir kackfrech gedacht, je könne cela Substr$(d$,&loop+1,"x0Dzx0A z") qui folgenden la ligne avec a$ ersetzen -- comme ursprünglich aussi gedacht était. Irrtum! fais je ca, so lautet qui erste Eintrag wieder "Aaahen" statt "Aachen" et quelques autre Einträge volonté aussi verhunzt.
PS: Darf on qui GlobalAllocs eigentlich genauso Déplacer comment Profan-Bereiche, alors pour dem Schema Bereich# = Long&, ou bien besoin celui-là pour une entsprechenden Stil? |
| | | | |
|
répondreOptions du sujet | 9.908 Views |
Themeninformationencet Thema hat 7 participant: |