Wieso funktioniert der Button beim 2. Mal nicht?

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

ETsoftware

Betreff: Wieso funktioniert der Button beim 2. Mal nicht?

BeitragMo, Jan 01, 2007 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jan 02, 2007 2:17
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 02, 2007 10:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, daran liegt es nicht.
Die Suche funktioniert immer, aber wenn ich 2mal suche,
funktioniert nach dem "Öffnen"-Button nichts mehr.
ETsoftware 2007

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jan 02, 2007 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 02, 2007 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group