Texte innerhalb einer Schleife anzeigen und String einlesen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10442
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Texte innerhalb einer Schleife anzeigen und String einle

Beitrag 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
"tja" – a German reaction to the apocalypse, Dawn of the Gods, nuclear war, an alien attack or no bread in the house
Nino
Beiträge: 1251
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Texte innerhalb einer Schleife anzeigen und String einle

Beitrag 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.
Sommertv
Beiträge: 68
Registriert: 26.04.2019 10:31
Computerausstattung: Lenovo W500, Debian Stable, Purebasic 5.70 (momentan die Testversion)
Wohnort: Mühldorf am Inn

Re: Texte innerhalb einer Schleife anzeigen und String einle

Beitrag 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?
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
Benutzeravatar
Kurzer
Beiträge: 1569
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Texte innerhalb einer Schleife anzeigen und String einle

Beitrag 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
"Never run a changing system!"
PB 5.73 x64, OS: Windows 7 Pro x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Ich bin Baujahr 1968, also aktuell 53.
Benutzeravatar
mk-soft
Beiträge: 3295
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Texte innerhalb einer Schleife anzeigen und String einle

Beitrag 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$")        
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.7x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace
Benutzeravatar
mk-soft
Beiträge: 3295
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Texte innerhalb einer Schleife anzeigen und String einle

Beitrag 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:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.7x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace
Benutzeravatar
Kurzer
Beiträge: 1569
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Texte innerhalb einer Schleife anzeigen und String einle

Beitrag 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?
Zuletzt geändert von Kurzer am 05.05.2019 12:22, insgesamt 1-mal geändert.
"Never run a changing system!"
PB 5.73 x64, OS: Windows 7 Pro x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Ich bin Baujahr 1968, also aktuell 53.
Benutzeravatar
mk-soft
Beiträge: 3295
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Texte innerhalb einer Schleife anzeigen und String einle

Beitrag 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.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.7x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace
Benutzeravatar
Kurzer
Beiträge: 1569
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Texte innerhalb einer Schleife anzeigen und String einle

Beitrag 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:
Zuletzt geändert von Kurzer am 07.05.2019 16:07, insgesamt 1-mal geändert.
"Never run a changing system!"
PB 5.73 x64, OS: Windows 7 Pro x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Ich bin Baujahr 1968, also aktuell 53.
Sommertv
Beiträge: 68
Registriert: 26.04.2019 10:31
Computerausstattung: Lenovo W500, Debian Stable, Purebasic 5.70 (momentan die Testversion)
Wohnort: Mühldorf am Inn

Re: Texte innerhalb einer Schleife anzeigen und String einle

Beitrag 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
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
Antworten