Autor | Thema: Listbox fehler?! | | Datum:07.12.01 13:30 
(sascha@willecke-net.de) | |
Hallo ich habe folgenden quellcode und möchte damit eine zeile (die erste) aus einer listbox löschen aber irgendwie bekomme ich immer -1 zurück! Also fehler! Was ist falsch?
let listbox&=@Create("SortedListBox",%hwnd,"",5,22,288,70)
print @SendMessage(listbox&,$0182,0,0)
setfont listbox&,schrift%
ClearList
whileloop user%
@AddString (listbox&,userinfo$[user%,1])
sub user%,1
wend
Die declerationen hab ich jetzt mal einfach weggelassen!
GRuß
Sascha
|
| | Datum:07.12.01 15:07 
(joerse@gmx.de) | |
Hallo Sascha,
Wenn in Deiner Listbox nix drin ist, ist das auch nicht
weiter verwunderlich.
Setz das mal ans Ende Deiner Schleife, dann sollte es klappen.
Gruß
Jörg
|
| | Datum:07.12.01 15:52 
(frankabbing@12move.de) | |
Hallo Sascha.
sub user%,1 '???
=
user%=user%-1 oder
user%=@Sub(user%,1)
Immer die gleichen Fehler, was Sascha...?
Gruß, Frank
|
| | | Datum:07.12.01 16:52 
(joerse@gmx.de) | |
Moment mal...
Da muß ich Sascha in Schutz nehmen.
declare user%
user%=10
print user%
Sub user%,1
print user%
WaitInput
QED
Jörg
|
| | Datum:07.12.01 19:50 
(mrk@mrk-soft.de) | |
>ClearList
>whileloop user%
>@AddString (listbox&,userinfo$[user%,1])
>sub user%,1
>wend
Hmmmmmmm ????????
Was soll das den werden ?????????? (?) (?), !!!!!!!!!!!!!
1: ClearList
2: whileloop user%
3: @AddString (listbox&,userinfo$[user%,1])
4: sub user%,1
5: wend
Zeile 1 ist zum einem total überflüssig !!!
Zeile 2 ist eine Schleife, die so oft durchlaufen wird,
wie in user% steht .... (schleifenanfang), ....
Zeile 3 soll also aus dem Array direkt in die Listbox
Schreiben !!!, nur warum von der maximalen
anzahl der User% ????
@AddString (listbox&,userinfo$[&loop,1]) 'richtig
Zeile 4: Grööööööllll, (sorry fürs lachen), aber irgendwie
solltest du dir doch nochmal die Profan-Hilfe
zur Brust nehmen. Whileloop wird zwars nicht
mehr von dem neuen Wert beeinflust, aber so sollte
man das absolut nicht machen. Eigentlich ist
diese Zeile absolut ÜBERFLÜSSIG.
Zeile 5: das Gegenstück zu WHILELOOP wäre eigentlich
ENDWHILE aber ein WEND funktioniert zum glück
hier genauso, schätze mal, das Profan Intern
bei beiden Befehlen den selben Delphi Code
ausführt.
Whileloop user%
@AddString (listbox&,userinfo$[&loop,1])
EndWhile
Faktum, in 3 Zeilen wäre das ganze vom Tisch ....
apropo Programm: ausgehend von deiner Frage im
PSP Forum Frage ich mich, warum überhaut der Umweg
über ein Array, mann kann genausogut die daten aus dem
orginal String zerlegen und dann direkt in die Listbox
Schreiben !!!
Nix für ungut,..... ((((((888888
Thorsten
ps: Welcher Web-Server ist den das, woraus du die daten
ausliest !!!!!
|
| | Datum:07.12.01 22:41 
(sascha@willecke-net.de) | |
Hallo Thorsten,
also zu clearlist! Wer sagt den das die listbox vorher nicht schoneinmal etwas andere daten enthalten hat! Und mit clearlist lösche ich doch die listbox wieder oder etwa nicht! So steht es zumindest in der Profan Hilfe!
zu whileloop: das stimmt da hab ich die hilfe wohl nicht ganz richtig durchgelesen!
zu drei: ich schreibe zeile für zeile aus dem array in die listbox und zwar immer einen anderen wert des arrays weil ich ja die variable user% runterzählen lasse! Oder etwa nicht? Damit hat sich wohl auch dein punkt 4 erübrigt!
zu 5: wenn du vielleicht mal die hilfe richtig lesen würdest, dann wüsstest du das endwhile und wend völlig das selbe sind und sonst nichts!
Aber ist ja auch egal! vielleicht solltest du nicht nur den programmierstil eines anderen kritisieren sondern auch mal das problem check den mein programm funktioniert als interpretierte prf reibungslos nur als exe nicht!
Gruß
Sascha
|
| | Datum:07.12.01 22:43 
(sascha@willecke-net.de) | |
achja die daten sind von einem apache webserver mit mysql datenbank unterstützung!
|
| | Datum:08.12.01 08:53 
(mrk@mrk-soft.de) | |
ClearList löscht NUR die ListboxListe, KEINE andere,
hat demnach KEINEN einfluss auf eine Listbox, die mit
Create erstllt wurde. (CreateListBox, CreateSortetListBox),
wobei das Dialog-Objeckte sind, die ListboxListe von
Profan ist Intern.
'Vorwärts / Rückwärts Zählen
Whileloop user%
'@AddString (listbox&,userinfo$[&loop,1]) 'vorwärzs
'@AddString (listbox&,userinfo$[user%-&loop,1]) 'rückwärtz
EndWhile
Zu deiner Schleife: Es ist wirklich absoluter HUMBUG,
den Wert von Whileloop wärend der Programmausführung
zu verändern. Zum GLÜCK ist Profan hier recht Human,
und interessiert sich wohl nicht mehr für den Wert
hinter WhileLoop, wenn die Schleife einmal durchlaufen wurde,
zählt also braf durch, egal, was dahinter später
angegeben wird. Obigers zeigt, wie es richtig aussieht,
je Vorwärts und Rückwaärts.
Roland (und andere):
Wäre es nicht richtiger, das diese Schleife (unten) eigentlich
NUR ein mal durchlaufen werden dürfte, jedenfalls von
der Logik her ???
declare anzahl%
anzahl% = 9
WhileLoop anzahl%
anzahl% = 0
print &loop
EndWhile
waitkey
Thorsten
ps: Sascha, Wenn du dich etwas Kritisirt fühltest, Sorry.
Allerdings solltest du dir wirkliuch nochmal die
Profanhilfe zur Brust nehmen, den einiges sind einfach
Flüchtigkeitsfehler, und von der &Loop Variuable scheinste
noch nie gegört zu haben ....
Achja, zur Strucktur des Programms: Das sollte nicht
bös gemeint sein, auch ich hstte damals (vor langer Zeit)
mal zu QBasic (Quck-Basic) Zeiten son kauderwelschich
Code Produziert, bis ich mal von Struckturierter
Programierung das erste mal höherte und dachte, wozu
soll das gut sein. Heute unter Windows und den
grösseren Projecten hier wäre das ohne diese Strucktur
vieles komplett unübersichtlich, vor allem, wenn
so 12 IF, ELSE, ENDIF Verschachtelungen auftreten,
verliert man so schnell den Überblick !!!
Unteres enthält einen Stuckturfehler, das Programm
ist so nicht lauffähig. In dieser Form ist es nicht
sehbar, wo genau der Fehlier liegt.
(Versuch den doch mal so zu finden ..)
IF a% = 1
IF b% = 1
ELSE
IF c% = 1
ELSE
If d% = 0
ENDIF
IF a% = 2
ELSE
ENDIF
ENDIF
ENDIF
Besser wäre es so, als Strucktur:
IF p1% = 1
IF p2% = 1
s% = b1% + b2%
Endif
ELSE
If p3% = 1
inc s%
s% = div(s%,2)
ENDIF
ENDIF
Schön übersichtlich, direkt ist zu sehen, welches ENDIF
oder ELSE zu welchen IF gehört, dazu jede Anweisung.
Einfach besser lesbar, und erleichtert auch anderen
die Fehlersuche.
Bis dahinn
Gruss Thorsten
|
| | Datum:08.12.01 08:57 
(mrk@mrk-soft.de) | |
Shit,
die Liste lässt keine Strucktuerieten Quellcode zu,
am Anfang werden IMMER alle Leerzeichen entfernt ...
|
| | Datum:08.12.01 13:12 
(joerse@gmx.de) | |
Hallo,
Wenn man seinen QT mit[ code ] b. z. w. [ /code ] (ohne Leerzeichen) beginnt und endet geht's:
IF p1% = 1
IF p2% = 1
s% = b1% + b2%
Endif
ELSE
If p3% = 1
inc s%
s% = div(s%,2)
ENDIF
ENDIF
siehe " Forum-Code" ist aktiv
Sogar das geht:

Schönen Tach noch
Jörg
|
| | Datum:08.12.01 14:47 
(sascha@willecke-net.de) | |
Hallo Thorsten,
ich gebe ehlich zu das ich mir noch nie die hilfe von whileloop und &loop durchgelesen hab! Eigentlich hab ich die schleife auch aus dem posting etwas früher im Forum und dessen antwort! Deshalb hab ich die whileloop schleife drinn, gewusst wie sie funktioniert hab ich ehlich gesagt nicht!
Und zur Strukturierung 1. das forum unterstützt das ja nicht einfach so! 2. Normalerweise programmiere ich strukturiert aber das programm musste schnell fertig werden! Ist ja sowieso nur ein test gewesen! Und jetzt geht es ja!
zu clearlist nochmal! Ich finde dann ist die hilfe vielleicht etwas unschlüssig! Ich meine vielleicht sollte das noch da stehen das das nur mit der nicht mit create erzeugten liste funktioniert! Naja egal....
Aber wie kann ich dann eine mit create erzeugte listbox wieder löschen? Mit @destroywindow(handle%)? oder muss ich jede zeile enzeiln löschen?
Gruß
Sascha
|
| | Datum: 08.12.01 15:18 
(prof.chaos@netcologne.de) | |
Hallo Sascha,
> Aber wie kann ich dann eine mit create erzeugte listbox wieder löschen?
dazu gibt's eine Message namens lb_ResetContent:
sendmessage(listbox&,$184,0,0)
Sebastian
|
| | Datum:07.12.01 22:51 
(sascha@willecke-net.de) | |
Achja ich hab jetzt den fehler gefunden war eigentlich ganz logisch und einfach! Hatte den teil des code aber nur in der maillingliste gepostet! Aber thorsten du hast doch den code auch dort gelesen oder? Folgendes war falsch:
vorher:
if @equ(ip$,"")
let guests%=@val(username$)
beep
waitinput
else.....
richtig:
if @equ$(ip$,"")
let guests%=@val(username$)
beep
waitinput
else....
Nicht für ungut!
Gruß
Sascha
|
|
|