Createfile() mit Editorgadget funktioniert nicht

Anfängerfragen zum Programmieren mit PureBasic.
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von PB42 »

Doch, Clausth... ist auch gut :D
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von DarkDragon »

Mach mal

Code: Alles auswählen

Debug GetCurrentDirectory()
irgendwohin. Dort muss dann der Ordner "Daten" existieren. Wenn du den Ordner woanders haben willst kannst du in den Compiler-Optionen das Arbeitsverzeichnis festlegen und/oder "Temporäre Executable im Quelltextverzeichnis erstellen" anklicken.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von PB42 »

Danke für den Tip, aber ich weiß ja, wo der Ordner "Daten" ist und letztenendes war das Problem ja auch gelöst. Aber dann kam der Hammer, daß ich das Editorgadget nichtmal ordentlich editieren konnte, nur weil die Returntaste als AddKeyboardshortcut für den Enterbutton verwendet wird. Den shortcut wollte ich aber nicht aufgeben und deshalb habe ich gestern abend kurzen Prozess gemacht und die Sache mit dem Editorgadget komplett rausgeworfen. Ist noch nie vorgekommen, daß ich bei einem Programmierproblem die Brocken einfach hinschmeiße.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von DarkDragon »

PB42 hat geschrieben:Danke für den Tip, aber ich weiß ja, wo der Ordner "Daten" ist
Jo sorry, hab leider erst jetzt gemerkt dass dieses Thema mehrseitig ist und nur die erste Seite gelesen. Da hörte es sich ganz danach an als ob du im falschen Verzeichnis die EXE startest.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von HeX0R »

PB42 hat geschrieben:Ist noch nie vorgekommen, daß ich bei einem Programmierproblem die Brocken einfach hinschmeiße.
Naja, das kam ja irgendwie mit Ankündigung, wenn man sich diesen Thread so durchliest.
Das einzige Problem bei deiner Aufgabenstellung ist wohl, dass das EditorGadget das EventType() nicht unterstützt.
Deswegen "ging dein RemoveKeyboardShortcut" auch nicht (besser: es wurde einfach nie aufgerufen).

Du hast auch nie verraten, wieso deine Datei denn "plötzlich" doch korrekt beschrieben wurde,
da liegt doch die Vermutung nahe, dass du da doch was falsch gemacht hattest?

Falls du mit einer Windows-Only-Variante leben kannst:

Code: Alles auswählen

OpenWindow(0, 0, 0, 300, 270, "", #PB_Window_SystemMenu)
EditorGadget(0, 5, 5, 290, 230)
StringGadget(1, 5, 240, 225, 22, "")
ButtonGadget(2, 235, 240, 60, 22, "Senden")

Repeat
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
			Break
		Case #WM_CHAR
			If EventwParam() = 13
				If GetActiveGadget() <> 0
					AddGadgetItem(0, -1, GetGadgetText(1))
					SetGadgetText(1, "")
				EndIf
			EndIf
	EndSelect
ForEver
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von PureLust »

PB42 hat geschrieben:RemoveKeyboardShortcut() bewirtkt GAR NICHTS, DAS ist die Wahrheit!!!
Waren vielleicht doch ein paar Bier zuviel. ;)

Kiffi lag (meiner Meinung nach) mit RemoveKeyboardShortcut() schon richtig.
Das Problem ist halt, das PB (mal wieder /:-> ) diverse Events nicht sauber durchreicht und man beim EditorGadget keinen #PB_EventType_Focus und #PB_EventType_LostFocus bekommt.

Wenn Du jedoch einfach das aktuell aktive Gadget abfragst, kannst Du Dir das zur Not ja auch leicht selber basteln und Kiffis Vorschlag mit RemoveKeyboardShortcut() funktioniert dann genau so wie Du's wolltest:

Code: Alles auswählen

OpenWindow(0, 0, 0, 300, 270, "", #PB_Window_SystemMenu)
EditorGadget(0, 5, 5, 290, 230)
StringGadget(1, 5, 240, 225, 22, "")
ButtonGadget(2, 235, 240, 60, 22, "Senden",#PB_Button_Default)

AddKeyboardShortcut(0,#PB_Shortcut_Return,2)
ReturnShortCutActive = #True

Repeat
  Event = WaitWindowEvent()
  
  ; ---- Hier der eigentlich wichtige Teil.
  
  If GetActiveGadget() <> 0
    If Not ReturnShortCutActive
      AddKeyboardShortcut(0,#PB_Shortcut_Return,2)
      ReturnShortCutActive = #True
    EndIf
  Else
    If ReturnShortCutActive
      RemoveKeyboardShortcut(0,#PB_Shortcut_Return)
      ReturnShortCutActive = #False
    EndIf
  EndIf
  
  ; -----
  
  Select Event
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 2
          Select EventType()
            Case #PB_EventType_LeftClick
              Debug "'Senden' wurde ausgelöst."
          EndSelect
      EndSelect
    Case #PB_Event_Menu
      Select EventMenu()
        Case 2
          Debug "'Senden' wurde ausgelöst."
      EndSelect
  EndSelect
ForEver
Gruß, PL.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von PB42 »

Vielen Dank auch für die letzten beiden Beiträge. Die werde ich abspeichern und später darauf zurückkommen, falls ich doch nochmal die Sache mit dem Editorgadget versuche.
Antworten