Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249316 (10752)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Listbox fehler?!
Sascha
| 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
Jörg Sellmeyer
| 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
Frank Abbing
| 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
Sascha
| Datum:07.12.01 16:28 (sascha@willecke-net.de) |
Hallo @frank: ja ist wohl so! Gruß Sascha
Jörg Sellmeyer
| 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
Thorsten HG
| 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 !!!!!
Sascha Willecke
| 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
Sascha Willecke
| Datum:07.12.01 22:43 (sascha@willecke-net.de) |
achja die daten sind von einem apache webserver mit mysql datenbank unterstützung!
Thorsten HG
| 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
Thorsten HG
| 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 ...
Jörg Sellmeyer
| 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
Sascha
| 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
Sebastian Sprenger
| 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
Sascha
| 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

| Zurück zur Übersicht