Wieso funktioniert der Button beim 2. Mal nicht?
Übersicht

ETsoftwareBetreff: Wieso funktioniert der Button beim 2. Mal nicht? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe ein Programm für eine Bibliotheke geschrieben und habe ein grosses Problem, wenn ich beim ersten Mal die Suche verwende funktioniert alles, aber wenn ich nochmals auf den Suchen-Button drücke, kann ich die Dateien nicht mehr öffnen. Code: [AUSKLAPPEN] Dim Namen$(250)
Dim Ausleihe$(20) Dim Nummer$(20) Dim DatumA$(20) Dim DatumR$(20) Dim titel$(20) Dim nr$(20) Dim d1$(20) Dim d2$(20) Dim label(20) Dim datum_heut(20) Dim buch(20) Dim cd(20) Dim loschen(20) Global schalter3 Global txtfeld2 Global txtfeld3 Global txtfeld4 Global txtfeld5 Global neuer Global kunde Global kundenname$ Global monatzahl Global monat$ Global heutdatum$ window=CreateWindow("AUSLEIHEN - BIBLIOTHEK LINDE",0,0,500,400) menu10=CreateMenu("Datei",10,WindowMenu(window)) menu11=CreateMenu("Sicherungskopie erstellen",11,menu10) menu13=CreateMenu("in Ordner 'Sicherungen'",13,menu11) Menu14=CreateMenu("in eigenen Ordner",14,menu11) menu12=CreateMenu("Beenden",12,menu10) menu20=CreateMenu("Kunden",20,WindowMenu(window)) menu21=CreateMenu("Neuer Kunde",21,menu20) label1=CreateLabel("Suchen nach:",10,30,100,20,window) txtfeld1=CreateTextField(15,50,150,20,window) schalter1=CreateButton("Suchen",115,75,50,20,window) liste1=CreateListBox(300,30,155,270,window) nl=OpenFile("Namensliste.txt") I=1 Repeat Namen$(I)=ReadLine(nl) AddGadgetItem liste1,Namen$(I) I=I+1 Until Eof(nl) label2=CreateLabel("Suchergebnisse",10,155,100,20,window) liste2=CreateListBox(10,180,260,120,window) schalter2=CreateButton("Liste löschen",160,155,110,20,window) Repeat event=WaitEvent() ort=EventData() If event=$803 Then If EventSource()=window Then Ende If EventSource()=neuer Then FreeGadget neuer If EventSource()=kunde Then Free_kunde EndIf If event=$1001 Then Select ort Case 12 Ende End Select EndIf If event=$401 Then If EventSource()=txtfeld1 Then SetStatusText window,"Ins Suchfeld wurde '"+TextFieldText(txtfeld1)+"' eingegeben. Bitte auf Suchen-Button drücken!" If TextFieldText(txtfeld1)="" Then SetStatusText window,"Bereit" HotKeyEvent 28,0,$1010,txtfeld1 EndIf If sucheakt=1 Or EventSource()=schalter1 Then .suche sucheakt=0 fund=0 zahl=0 ClearGadgetItems liste2 I=1 SetStatusText window,"SUCHE." Start=MilliSecs() For X=1 To 250 suche=Instr(Namen(X),TextFieldText(txtfeld1)) If suche<>0 Then fund=fund+1 zahl=X AddGadgetItem liste2,Namen(X) EndIf If MilliSecs()-Start=20 Then If I=1 Then SetStatusText window,"SUCHE." If I=2 Then SetStatusText window,"SUCHE.." If I=3 Then SetStatusText window,"SUCHE..." I=I+1 If I=4 Then I=1 Start=MilliSecs() EndIf Next .aussen az=CountGadgetItems(liste2) label2=CreateLabel("Suchergebnisse ("+az+")",10,155,100,20,window) schalter4=CreateButton("Öffnen",170,305,100,20,window,1) SetStatusText window,"Bereit" End If If EventSource()=schalter2 Then ClearGadgetItems liste2 label2=CreateLabel("Suchergebnisse",10,155,100,20,window) FreeGadget schalter4 EndIf If EventSource()=schalter4 Then KUNDE((GadgetItemText(liste2,SelectedGadgetItem(liste2)))) EndIf End If Forever End Function KUNDE(name$) kunde="" filedata$="" kundenname$="" filedata$=(name$+".blk") kundenname$=name$ kunde=CreateWindow(name$,500,220,524,500,0,1) kundenfile=OpenFile(filedata$) For I=1 To 20 Ausleihe$(I)=ReadLine(kundenfile) Nummer$(I)=ReadLine(kundenfile) DatumA$(I)=ReadLine(kundenfile) DatumR$(I)=ReadLine(kundenfile) Next CloseFile kundenfile For I=1 To 20 label(I)=CreateLabel(I,2,(I*20),13,15,kunde) titel(I)=CreateTextArea(22,(I*20),140,20,kunde) nr(I)=CreateTextArea(170,(I*20),70,20,kunde) d1(I)=CreateTextArea(244,(I*20),68,20,kunde) d2(I)=CreateTextArea(318,(I*20),68,20,kunde) datum_heut(I)=CreateButton("D",392,(I*20),15,20,kunde) buch(I)=CreateButton("B",413,(I*20),15,20,kunde) cd(I)=CreateButton("CD",428,(I*20),20,20,kunde) loschen(I)=CreateButton("X",454,(I*20),15,20,kunde) AddTextAreaText(titel(I),Ausleihe$(I)) AddTextAreaText(nr(I),Nummer$(I)) AddTextAreaText(d1(I),DatumA(I)) AddTextAreaText(d2(I),DatumR(I)) Next label6=CreateLabel("Titel",20,2,80,17,kunde) label7=CreateLabel("Nummer",170,2,60,17,kunde) label8=CreateLabel("Ausleih-Datum",244,2,68,18,kunde) label9=CreateLabel("Zurückzugeben bis...",318,2,100,18,kunde) End Function Function Free_Kunde() DeleteFile kundenname$+".blk" kf=WriteFile(kundenname$+".blk") For I=1 To 20 WriteLine kf, TextAreaText(titel$(I)) WriteLine kf, TextAreaText(nr$(I)) WriteLine kf, TextAreaText(d1$(I)) WriteLine kf, TextAreaText(d2$(I)) Next CloseFile kf For I=1 To 10 titel$(I)="" nr$(I)="" d1$(I)="" d2$(I)="" Next kf=0 kundenname$="" FreeGadget kunde End Function Function ENDE() End End Function Zusätzlich müssen im Ordner, in dem das Programm gespeichert ist folgende Dateien erstellt werden: -"Namensliste.txt" / Liste aller Name -Name$, Strasse$, Ort$.blk Hoffentlich habe ich das klar ausgedrückt und der Code ist verständlich. Bitte verzeiht mir, dass ich nur selten Kommentare eingebaut habe. Ich finde den Fehler einfach nicht! Danke |
||
ETsoftware 2007 |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, hab es mal angetestet,aber die Suche geht immer ?
Eins hab ich gefunden, Code: [AUSKLAPPEN] nl = OpenFile ("Namensliste.txt")
I = 1 Repeat Namen$ (I) = ReadLine (nl) AddGadgetItem liste1,Namen$ (I) I = I + 1 Until Eof (nl) CloseFile nl;evt schließenl aber ob es daran liegt? |
||
[BB2D | BB3D | BB+]
|
ETsoftware |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein, daran liegt es nicht.
Die Suche funktioniert immer, aber wenn ich 2mal suche, funktioniert nach dem "Öffnen"-Button nichts mehr. |
||
ETsoftware 2007 |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, deine Hauptschleife ist etwas unsinnig,
hab die aber mal so geändert das es jezt geht Code: [AUSKLAPPEN] Dim Namen$ (250)
Dim Ausleihe$ (20) Dim Nummer$ (20) Dim DatumA$ (20) Dim DatumR$ (20) Dim titel$ (20) Dim nr$ (20) Dim d1$ (20) Dim d2$ (20) Dim label (20) Dim datum_heut (20) Dim buch (20) Dim cd (20) Dim loschen (20) Global schalter3 Global txtfeld2 Global txtfeld3 Global txtfeld4 Global txtfeld5 Global neuer Global kunde Global kundenname$ Global monatzahl Global monat$ Global heutdatum$ window = CreateWindow ("AUSLEIHEN - BIBLIOTHEK LINDE",0,0,500,400) menu10 = CreateMenu ("Datei",10,WindowMenu (window) ) menu11 = CreateMenu ("Sicherungskopie erstellen",11,menu10) menu13 = CreateMenu ("in Ordner 'Sicherungen'",13,menu11) Menu14 = CreateMenu ("in eigenen Ordner",14,menu11) menu12 = CreateMenu ("Beenden",12,menu10) menu20 = CreateMenu ("Kunden",20,WindowMenu (window) ) menu21 = CreateMenu ("Neuer Kunde",21,menu20) label1 = CreateLabel ("Suchen nach:",10,30,100,20,window) txtfeld1 = CreateTextField (15 ,50,150,20,window) schalter1 = CreateButton ("Suchen",115,75,50,20,window) liste1 = CreateListBox (300 ,30,155,270,window) nl = OpenFile ("Namensliste.txt") I = 1 Repeat Namen$ (I) = ReadLine (nl) AddGadgetItem liste1,Namen$ (I) I = I + 1 Until Eof (nl) CloseFile nl label2 = CreateLabel ("Suchergebnisse",10,155,100,20,window) liste2 = CreateListBox (10 ,180,260,120,window) schalter2 = CreateButton ("Liste löschen",160,155,110,20,window) schalter4 = CreateButton ("Öffnen",170,305,100,20,window,1) HideGadget Schalter4 ;geändert Repeat event = WaitEvent () ort = EventData () If KeyDown(2) Then Stop If event = $803 Then If EventSource () = window Then Ende If EventSource () = neuer Then FreeGadget neuer If EventSource () = kunde Then Free_kunde EndIf If event = $1001 Then Select ort Case 12 Ende End Select EndIf If event = $401 Then If EventSource () = txtfeld1 Then SetStatusText window,"Ins Suchfeld wurde '" + TextFieldText (txtfeld1) + "' eingegeben. Bitte auf Suchen-Button drücken!" If TextFieldText (txtfeld1) = "" Then SetStatusText window,"Bereit" HotKeyEvent 28 ,0, $1010 ,txtfeld1 EndIf If sucheakt = 1 Or EventSource () = schalter1 Then .suche sucheakt = 0 fund = 0 zahl = 0 ClearGadgetItems liste2 I = 1 SetStatusText window,"SUCHE." Start = MilliSecs () For X = 1 To 250 suche = Instr (Namen (X) ,TextFieldText (txtfeld1) ) If suche <> 0 Then fund = fund + 1 zahl = X AddGadgetItem liste2,Namen (X) EndIf If MilliSecs () - Start = 20 Then If I = 1 Then SetStatusText window,"SUCHE." If I = 2 Then SetStatusText window,"SUCHE.." If I = 3 Then SetStatusText window,"SUCHE..." I = I + 1 If I = 4 Then I = 1 Start = MilliSecs () EndIf Next .aussen az = CountGadgetItems (liste2) label2 = CreateLabel ("Suchergebnisse (" + az + ")",10,155,100,20,window) ShowGadget schalter4 ;geändert SetStatusText window,"Bereit" End If If EventSource () = schalter2 Then ClearGadgetItems liste2 label2 = CreateLabel ("Suchergebnisse",10,155,100,20,window) HideGadget schalter4 ; Hier hast du den Button gelöscht EndIf If EventSource () = schalter4 Then KUNDE ( (GadgetItemText (liste2,SelectedGadgetItem (liste2) ) ) ) EndIf End If Forever End Function KUNDE (name$) kunde = "" filedata$ = "" kundenname$ = "" filedata$ = (name$ + ".blk") kundenname$ = name$ kunde = CreateWindow (name$,500,220,524,500,0,1) kundenfile = OpenFile (filedata$) For I = 1 To 20 Ausleihe$ (I) = ReadLine (kundenfile) Nummer$ (I) = ReadLine (kundenfile) DatumA$ (I) = ReadLine (kundenfile) DatumR$ (I) = ReadLine (kundenfile) Next CloseFile kundenfile For I = 1 To 20 label (I) = CreateLabel (I,2, (I * 20) ,13,15,kunde) titel (I) = CreateTextArea (22 , (I * 20) ,140,20,kunde) nr (I) = CreateTextArea (170 , (I * 20) ,70,20,kunde) d1 (I) = CreateTextArea (244 , (I * 20) ,68,20,kunde) d2 (I) = CreateTextArea (318 , (I * 20) ,68,20,kunde) datum_heut (I) = CreateButton ("D",392, (I * 20) ,15,20,kunde) buch (I) = CreateButton ("B",413, (I * 20) ,15,20,kunde) cd (I) = CreateButton ("CD",428, (I * 20) ,20,20,kunde) loschen (I) = CreateButton ("X",454, (I * 20) ,15,20,kunde) AddTextAreaText (titel (I) ,Ausleihe$ (I) ) AddTextAreaText (nr (I) ,Nummer$ (I) ) AddTextAreaText (d1 (I) ,DatumA (I) ) AddTextAreaText (d2 (I) ,DatumR (I) ) Next label6 = CreateLabel ("Titel",20,2,80,17,kunde) label7 = CreateLabel ("Nummer",170,2,60,17,kunde) label8 = CreateLabel ("Ausleih-Datum",244,2,68,18,kunde) label9 = CreateLabel ("Zurückzugeben bis...",318,2,100,18,kunde) End Function Function Free_Kunde () DeleteFile kundenname$ + ".blk" kf = WriteFile (kundenname$ + ".blk") For I = 1 To 20 WriteLine kf, TextAreaText (titel$ (I) ) WriteLine kf, TextAreaText (nr$ (I) ) WriteLine kf, TextAreaText (d1$ (I) ) WriteLine kf, TextAreaText (d2$ (I) ) Next CloseFile kf For I = 1 To 10 titel$ (I) = "" nr$ (I) = "" d1$ (I) = "" d2$ (I) = "" Next kf = 0 kundenname$ = "" FreeGadget kunde End Function Function ENDE () End End Function die geänderten stellen hab ich gekennzeichnet! |
||
[BB2D | BB3D | BB+]
|
ETsoftware |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für deine Antworten.
Genau den Öffnen-Button musste man immer löschen oder verschwinden lassen. Danke auch für deine Verbesserungsvorschläge. |
||
ETsoftware 2007 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group