Könnte irgendwer mal über meinen Code schauen ?
Wenn ich die File-Routinen reinmache, löscht es mir nicht mehr das Editfeld.
Info zum Programm :
Ich möchte ein Android-Programm schreiben, das in einer Kantine einen QR-Code
über BT-Scanner und HID-Tastatur einliest. Im QR-Code steht nur die Personalnummer
des jeweiligen Mitarbeiters. Es geht um Essenszuschlag. Da soll jeder Mitarbeiter, der
ein Essen (egal was) verzehrt, einen Essenszuschlag bekommen. Das gilt aber nur für ein
Essen pro Tag. Damit man sich nicht zweimal eintragen kann, wird geprüft, ob Personalnr
und Datum (heutiger Tag) schon in der Datei vorhanden ist. Wenn ja, hat er schon gescannt
und gegessen, wenn nicht wird er in die Liste (Datei) eingetragen. Auch soll jeden Monat
eine neue Datei angelegt werden, damit die alte von der Lohnbuchhaltung ausgewertet
werden kann. Existiert noch keine Datei, soll eine neue, leere Datei angelegt werden.
Das ist der Fall beim Erststart und jeden neuen Monat.
Das Scannen an sich funktioniert und den Scanner habe ich auf ein Endezeichen (RETURN)
eingestellt.
Code: Alles auswählen
Datei$ = FormatDate("%mm_%yyyy", Date()) + ".txt" ; z.B. 07_2023 für Juli 2023
gefunden.i = 0
MA_nr$ = ""
Datum$ = ""
zeile$ = ""
Procedure CreateCallback(Status, Filename$, File, SizeRead)
Select Status
Case #PB_Status_Saved
; File correctly saved
Case #PB_Status_Error
; File saving has failed
EndSelect
EndProcedure
Procedure ReadCallback(Status, Filename$, File, Size)
If Status = #PB_Status_Loaded
gefunden = 0
While Eof(0) = 0
zeile$ = ReadString(0)
If (StringField(zeile$, 1, ",") = Datum$) And (StringField(zeile$, 2, ",") = MA_nr$)
gefunden = 1
EndIf
Wend
CloseFile(0)
ElseIf Status = #PB_Status_Error
Debug "Error when loading the file: " + Filename$
EndIf
EndProcedure
Procedure MenuEvents()
If EventMenu() = 15
Datum$ = FormatDate("%dd.%mm.%yyyy", Date())
MA_nr$ = GetGadgetText(1)
; hier prüfen, ob MA_nr + aktuelles Datum in Datei
; wenn nicht vorhanden, reinschreiben
If OpenFile(0, Datei$, @ReadCallback(), #PB_LocalFile)
If gefunden < 1
WriteStringN(0, Datum$ + "," + MA_nr$)
CloseFile(0)
EndIf
Else
If CreateFile(0, Datei$, @CreateCallback())
; leere Datei
ExportFile(0, "text/plain", #PB_LocalFile)
CloseFile(0)
EndIf
EndIf
SetGadgetText(1, "") ; Editfeld leeren für neuen Scan
SetActiveGadget(1) ; Fokus auf Editfeld setzen
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 322, 205, "QR-Code Scanner", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(1, 8, 10, 306, 20, "")
AddKeyboardShortcut(0, #PB_Shortcut_Return, 15)
BindEvent(#PB_Event_Menu, @MenuEvents())
SetActiveGadget(1)
EndIf
PS: Wie behandelt SpiderBasic denn die Schreibrechte von Dateien ?
Android ist da ja mittlerweile recht restriktiv geworden.
Ich muß ja auch später wissen, wo die Datei gespeichert ist, damit man sie
per BT verschicken und weiter verarbeiten kann.