Seite 2 von 3

Re: Texte innerhalb einer Schleife anzeigen und String einle

Verfasst: 05.05.2019 01:52
von Kiffi
@Sommertv

Kleiner Tipp nebenbei: Drück mal nacheinander <Strg> + A und <Strg> + I. Danach ist ein Code vernünftig eingerückt.

Grüße ... Peter

Re: Texte innerhalb einer Schleife anzeigen und String einle

Verfasst: 05.05.2019 07:54
von Nino
Sommertv hat geschrieben:Hallo,
das Thema hab ich jetzt geändert, den Quelltext umgebaut, die Fehler sind aber immer noch dieselben.
Danke für's Ändern des Thread-Titels.

Die Tipps von mk-soft, auf die ich dich auch nochmal extra hingewiesen hatte, hast du immer noch nicht komplett umgesetzt. Ich lese grundsätzlich keine Codes ohne EnableExplicit am Anfang, die länger als ca. 5 Zeilen sind (und andere Forenteilnehmer handhaben es ähnlich). Und wenn ich das einfüge bekomme ich beim Versuch, den Code auszuführen, eine Fehlermeldung. Ich bin dann 'mal raus hier.

Re: Texte innerhalb einer Schleife anzeigen und String einle

Verfasst: 05.05.2019 09:46
von Sommertv
Guten Morgen,

Vielleicht kann mir jemand erklären wie man EnableExplicit einsetzt und wofür man das braucht.


Zu meinem Anzeigefehler:
Ich denke das hängt damit zusammen, weil das Gadget die Änderungen innerhalb der Schleife nicht mit bekommt.
Hab versucht die Schleife so umzuschreiben, dass das Programm nach jeder Änderung wieder auf das
Gadget Handling zurück springt. Dann klappt es, ist allerdings sehr umständlich.
In Xbasic gibt es dafür den Befehl "Redraw". Damit werden Änderungen (Xbasic bezeichnet Gadget als Grid) sofort wirksam.

XBasic Code:
XuiSendMessage (grid, #SetTextString, 0, 0, 0, 0, eingabekid,@"Nichts zum löschen markiert oder vorhanden")
XuiSendMessage (grid, #Redraw, 0, 0, 0, 0, 0, 0)

Gibts für Purebasic einen äquivalenten Befehl?

Re: Texte innerhalb einer Schleife anzeigen und String einle

Verfasst: 05.05.2019 10:09
von Kurzer
Sommertv hat geschrieben:Vielleicht kann mir jemand erklären wie man EnableExplicit einsetzt und wofür man das braucht.
Man schreibt einfach EnableExplicit an den Beginn seines Programms.
Diese Compilerdirektive hilft dabei Fehler zu vermeiden.
Die PureBasic-Hilfe hat geschrieben:EnableExplicit
DisableExplicit


Beschreibung

Aktiviert (EnableExplicit) oder deaktiviert (DisableExplicit) den Explizit-Modus. Wenn aktiviert, werden alle nicht ausdrücklich mittels Define, Global, Protected oder Static deklarierten Variablen nicht akzeptiert und der Compiler wird eine Fehlermeldung ausgeben. Dies kann helfen, Schreibfehler bei der Verwendung von Variablen auszumerzen.
Beispiel:

Code: Alles auswählen

  EnableExplicit
  
  Define a
  
  a = 20 ; Ok, da mittels 'Define' deklariert
  b = 10 ; Hier wird ein Fehler ausgegeben
Wenn du das in Deinem Code anwendest, wirst du feststellen, dass die Variable DelFlag in Zeile 98 nicht definiert worden ist. Und wenn du das korrigiert hast, wirst du feststellen, dass da noch viele andere Variablen nicht definiert sind - vor allem in den Prozeduren. Schau dir dazu gern Global und Protected in der Hilfe an.

Ansonsten fällt mir auf, dass das Arrangement in deinem Code etwas verwirrend ist. Du hast z.B. deine Prozeduren alle unterhalb der Eventschleife liegen (und gehst auch sehr inflationär mit Leerzeilen um ;-) ).

Bild

Das kann man zwar so machen, aber ich finde es ungewöhnlich. Prozeduren habe ich in meinen Programmen immer oberhalb der Eventschleife liegen. Die Eventschleife ist ja quasi der Hauptloop in deinem Programm. Hier ist die Steuerzentrale von wo aus die einzelnen Prozeduren aufgerufen werden. Ich bin zwar kein gelernter Informatiker, aber ich würde behaupten, dass es in PureBasic "Usus" ist, die Eventschleife unterhalb der Prozeduren, wenn nicht sogar immer als letzten Teil des Sourcecodes zu platzieren. Außerdem hat das den Vorteil, dass du vermutlich nicht alle Prozeduren mit einem "Declare" deklarieren musst. Das musst du nur, wenn die Prozedur an einer Stelle aufgerufen wird, an der sie noch nicht implementiert worden ist. In deinem Fall trifft das auf alle Prozeduren zu, da sie alle erst hinter/unter deiner Eventschleife stehen.

Als ich neu war bei PB habe ich mir diese Dinge gern aus den Beispielen in der PureBasic Hilfe abgeschaut.

Ich kenne zwar nicht die Paradigmen und die Gepflogenheiten, die man in XBasic anwendet, aber du kannst davon ausgehen, dass man bei einem Wechsel der Programmiersprache an der ein oder anderen Stelle auch anders an ein Problem herangehen muss. Liebgewonnene Gewohnheiten könnten ggf. nicht mehr funktionieren und man muss sich evtl. mal kopftechnisch "resetten" und sich mit den Paradigmen und Lösungsansätzen der neuen Sprache mit Hilfe von kleinen Beispielen vertraut machen. In diesem Punkt finde ich die Hilfe von PureBasic und auch die mitgelieferten Beispielcodes sehr hilfreich. Das nur mal als Denksanstoss.

Ich vermute, dass das bei deinem Programm gerade ähnlich ist, da sich einige User über deine Herangehensweise wundern. Selbst habe ich dein Programm nicht weiter ausprobiert, da vermutlich der Teil mit dem RunProgram() auf meinem Windows System nicht laufen wird.

Gruß Kurzer

Re: Texte innerhalb einer Schleife anzeigen und String einle

Verfasst: 05.05.2019 11:14
von mk-soft
Nimm diesen part erst mal aus bis die GUI läuft.

Vielleicht kann dann jemand diesen Part sich anschauen was da eventuell nicht so geht.

Code: Alles auswählen

; mypgm= RunProgram("/usr/local/bin/youtube-dl", Chr(32) + Chr(34) + Adress$ + Chr(34), ".",  #PB_Program_Open|#PB_Program_Read)
; ;RunProgram("/usr/local/bin/youtube-dl", Chr(32) + Chr(34) + Adress$ + Chr(34), ".",  #PB_Program_Open|#PB_Program_Read)    
; Repeat
;   Debug ReadProgramString(mypgm)
;   SetGadgetText(#LabAdr, "Lade " + Adress$)        
; Until Not ProgramRunning(mypgm)

SetGadgetText(#LabAdr, "Lade " + "Test GUI Adress$")        

Re: Texte innerhalb einer Schleife anzeigen und String einle

Verfasst: 05.05.2019 11:26
von mk-soft
Off Topic
@Kurzer

Ich finde Deinen Code für ImgBB auch gut.
Aber für etwas Code erzeugst du einen Riesen (Daten) Müllberg ! :mrgreen:

Re: Texte innerhalb einer Schleife anzeigen und String einle

Verfasst: 05.05.2019 11:53
von Kurzer
Off Topic
mk-soft hat geschrieben:Off Topic@Kurzer: Ich finde Deinen Code für ImgBB auch gut.
Aber für etwas Code erzeugst du einen Riesen (Daten) Müllberg ! :mrgreen:
Meinst du wegen der vielen/langen Kommentare?

Re: Texte innerhalb einer Schleife anzeigen und String einle

Verfasst: 05.05.2019 12:11
von mk-soft
Kurzer hat geschrieben:
mk-soft hat geschrieben:Off Topic@Kurzer: Ich finde Deinen Code für ImgBB auch gut.
Aber für etwas Code erzeugst du einen Riesen (Daten) Müllberg ! :mrgreen:
Meinst du wegen der vielen/langen Kommentare?
Bilder Daten! Auch wenn JPG die Daten Komprimiert.

Re: Texte innerhalb einer Schleife anzeigen und String einle

Verfasst: 05.05.2019 12:26
von Kurzer
Off Topic
Ich glaube, ich stehe gerade auf dem Schlauch. :shock: Meinst du wegen des Screenshots da oben?

Falls ja -> Ich bin halt eher ein "optisch" orientierter Mensch. :D Und das JPG nimmt zumindest auf dem PureBasic Forumsserver keinen Platz weg. :mrgreen:

Re: Texte innerhalb einer Schleife anzeigen und String einle

Verfasst: 07.05.2019 07:46
von Sommertv
Guten Morgen,

das 1. (Hauptproblem) hat sich erledigt,
ich dachte man kann SetGadgetText auch ausserhalb der Hauptschleife benutzen.
Das war ich von XBasic so gewohnt, weil es dort den Befehl Redraw Grid gibt und der funktioniert auch in Unterprogrammen.
Muss also den ganzen Code erstmal umbauen...

Schöne Grüsse
Kurt