Foro | | | | Nico Madysa | Einen Saludo allen daraußen.
Dies es el offizielle Nachfolger hiervon: [...] . Diesmal taucht una muy seltsamer Fehler en quasi demselben Code en. A Erinnerung sei él una vez más (en unwesentlich gekürzter Form) gezeigt: KompilierenMarcaSeparación $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 Texto en wenig Extraño, entscheiden son nämlich el folgenden Zeilen: KompilierenMarcaSeparación
whileloop 0,len(d$,"x0Dzx0Az")-1
a$ = "Mzeziznz;zVzezrzszuzczhz!z"
a$ = Substr$(d$,&bucle+1,"x0Dzx0Az")
Título de la ventana Translate$(a$,"z","|")
InsertStringW(hSortDP&,a$,&bucle)
InsertStringW(hSortDP&,Substr$(d$,&bucle+1,"x0Dzx0Az"),&bucle)
EndWhile
Hier stürzt el Code en el späteren Línea KompilierenMarcaSeparación sang- y klanglos de. Nun el eigentlich verwunderlichen Beobachtungen: 1. Das Kompilat arbeitet fehlerfrei. 2. Nehme Yo no el Umweg encima a$, pero füge el Substring inmediatamente una (Línea 2 y 4 weg, dafür Línea 5), así hay no Fehler. 3. Nehme Yo no unterschiedlichen Textos, pero una festen Probetext (Línea 2 weg, dafür Línea 1), así hay ebenfalls no Fehler. 4. Item se ejecuta alles fehlerfrei, si yo el el obige Línea con Título de la ventana entkommentiere. An el Prozessorauslastun kann lo sin embargo no mentira, porque füge Yo anstatt de Título de la ventana Sleep una, así stürzt el Kode ebenfalls de.
Das waren ahora vier Wege, esta Fehler a umgehen. Doch ha irgendjemand una Idea, por qué él überhaupt auftritt? Jede dieser vier Lösungen (außer tal vez Nummer 3) debería eigentlich gar no Auswirkung haben y doch verhindern ellos el Programmabsturz. Dietmar y yo son con unserem Latein al Ende, doch tal vez sehen 46 Augen más que 4.
Lo verbleibt ratlos
Nico Madysa |
| | | | |
| | Frank Abbing | Yo sería sagen, el problema son el Cuerdas. Unicode-Cuerdas benutzen como Endekennung doch zwei Nullbytes, Profano uno. |
| | | | |
| | Dietmar Horn | Yo sería media, hier ha Roland todavía algo übersehen, qué en el Interpreter para Choque führt aber como Compilat dagegen fehlerfrei funktioniert.
Falls el wirklich sólo a el unterschiedlichen Endekennungen mentira debería, entonces müßten después de mi Verständnis doch todos de Nico durchgespielten Varianten abstürzen, oder se wenigstens en el Interpreter y compiliert identisch comportamiento (unabhängig su, si siempre Choque oder siempre kein Choque).
Saludo 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. El *.exe producido con profed32.exe se ejecuta por. El *.exe con XProfEd32.exe producido bricht de con el Fehlermeldung : Línea 26, a# no declariert. a# eingefügt y es con el ganzen Alphabet más???
Fehler kann Yo no suchen, como momentan Trabbel con el Laptop. DVD-Laufwerk se sólo todavía como CD-Laufwerk erkannt y el Tips en el WEB y alte Abbilder konnten el problema no beheben. Beim Aufräumen fand Todavía el Anhang (verwendbar?) y KilletSoft Data Conversion Freeware: [...] |
| | | | |
| | | Nur kurz sobrevolados, pero yo hoffe, Ihr überseht no, dass el Speicherbereich para el Klasse después de final el Función verflogen es.
Vlt. mejor hier con z.B. globalAlloc una Handle para una Speicher holen y el Struktur dareinkopieren. |
| | | | |
| | Nico Madysa | Hmm, todavía mehr Merkwürdigkeiten: 5. Mir es aufgefallen, dass LVI# en InsertStringW al Ende no disposed se. Also Yo al Ende Disponer LVI# eingefügt. Ergebnis: Crash. 6. Danach me está aufgefallen, dass el benutzte Zona en LoadText UND InsertStringW LVI# heißt, weswegen Yo ihn en InsertStringW en p_LVI# umbenannt habe. Ergebnis: Crash; egal, si p_LVI# disposed se oder no.
Mein eigentliches Problema besteht en él, dass all solcherlei Los cambios como z.B. Edición mittels Título de la ventana überhaupt no Auswirkungen haben debería. Auch, dass lo en el Interpreter hakt y como Exe durchläuft, lässt mich langsam glauben, dass el Fehler irgendwo en Profano incluso steckt. Roland se se dazu sicherlich bald a Wort informe, gell?
@IF: Welche Klasse y welche Función media du porque? |
| | | | |
| | | Sorry, Estructuras son para mich auch "nur" Klassen. ^ ^
Yo mi cs# en CreateW.
Nehmt doch nen globalAlloc y kopiert el Inhalt de cs# hinein y merkt Euch el Handle en z.B. una dyn.Array y übergebt a u_CreateWindowExW el Handle en lugar de cs#. (Weil Yo ahora no sicher bin, si u_CreateWindowExW el Speicher para se sichert oder esta gerne obtener sehen möchte.)
Wobei Yo sehe grad, Cuerdas como class$ debería después de Verlassen el Función ebenso "futsch" ser. |
| | | | |
| | Nico Madysa | So, Yo el Win32.hlp lese, ha cs# gar nichts con el Sache con el Sache a tun, porque el es sólo una Zona, el a el Message WM_CREATE weitergegeben se. Der einzigen Nutzen es, dass el erstellte Control begreift, qué es. Danach debería lo eigentlich völlig unnötig ser. |
| | | | |
| | Frank Abbing | Stell sicher, dass deine Cuerdas überall en deinem Code al Ende zwei Nullbytes haben, wo siempre du XProfan-Cuerdas zusammen con Unicode-Cuerdas benutzt. Dass lo manchmal funktioniert y manchmal no, deutet para mich darauf hin, dass el no siempre el Fall es. Im Zweifelsfall stattdessen Speicherbereiche uso. Ob du bereich# oder GlobalAlloc-Memory benutzt es eigentlich piepegal. Ist beides el Gleiche. |
| | | | |
| | Nico Madysa | So, also Yo sehe, nichts, Yo todavía hacer kann: KompilierenMarcaSeparación $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
El kuriose Línea es a$ = Substr$(d$,&loop+1,x0Dzx0Az). Ist ellos auskommentiert, así se ejecuta alles wunderbar, arbeitet ellos hingegen con (obwohl ellos gar no Einfluss haben debería), así es en el ersten Línea Aaahen, en lugar de Aachen. Yo sehe mich simplemente no imstande, una Fehler en un chaotischen Kode para encontrar. Wenn Yo no gerade todavía por Zufalle darauf stoße, bin Yo wirklich así weit, Windows oder Profano el Sache en el Schuhe a schieben.
@Franco: Theoretisch debería el zwei Abschlussbytes sin Interesse ser, porque el Listviewmessages verlangen stets el genaue Pufferlänge, el en el Eigenschaft iTextMax& angegeben ser muss. Sie verlangen no Abschlussbytes. Praktisch Yo, en sicher a ir, todavía folgende Línea en InsertStringW geändert: KompilierenMarcaSeparación Yo habe el String, el unmittelbar a el Message va, todavía zwei Nullbytes hinzugefügt. (Und viel mehr Unicode-Messages como en InsertStringW kommen en el gesamten Code no antes.) Das Ergebnis ha mich no überrascht: Choque. |
| | | | |
| | | Usted debe tal vez simplemente para el Speicher, el Usted para Stringinhalte nutzt y a Apis übergibst, no XProfan-Cuerdas uso. KompilierenMarcaSeparación |
| | | | |
| | Nico Madysa | Deinem Seelenfrieden zuliebe habe ego getan. KompilierenMarcaSeparación $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
Und Yo muss sagen, dass mich el Überraschungen siempre weniger überraschen. 7. Nachdem Yo InsertStringW en GlobalAlloc umgestellt hatte, hatten todos Einträge unsinnige Schwänzchen. 8. Nachdem Yo entonces auch todavía el Einträge jeweils en zwei Nullbytes erweitert hatte, hatte lo otra vez como en el Original funktioniert. (Kann me irgendeiner el Diferencia zwischen el Adresse uno Speicherbereiches con el Longitud len(ss$) y Adresse uno Profanstrings con el Longitud len(ss$) erklären?) 9. Nachdem Yo el seltsame Línea a$ = Substr$(d$,&loop+1,"x0Dzx0A z") otra vez eingefügt habe, ha se kein Diferencia ergeben. Dieses normale Comportamiento ha mich de allem al meisten überrascht. 10. Como a$ = Substr$(d$,&loop+1,"x0Dzx0A z") gilt, Yo me kackfrech pensamiento, Yo könne el Substr$(d$,&loop+1,"x0Dzx0A z") el folgenden Línea con a$ sustituir -- como ursprünglich auch pensamiento war. Irrtum! Mache Yo dies, así lautet el erste Eintrag otra vez "Aaahen" en lugar de "Aachen" y algunos otro Einträge voluntad auch verhunzt.
PS: Darf uno el GlobalAllocs eigentlich genauso mover como Profano-Bereiche, also después de el Schema Zona# = Long&, oder benötigen jene dafür una entsprechenden Stil? |
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 7 subscriber: |