Datenbank neu Berechnen, Wo ist mein Fehler ?
Übersicht

SchoppyBetreff: Datenbank neu Berechnen, Wo ist mein Fehler ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
irgendwo in meinem Code habe ich nen Fehler gemacht, vielleicht kann mir einer helfen ? Wenn erst der dritte dann der zweite eintrag aus der Listbox gelöcht wird, wird die Datenbank korrekt neu angelegt, Wenn erst der zweite dann der dritte Eintrag gelöscht wird ebenfallls, aber sobald erst der erste Eintrag gelöscht wird dann stimmt die berechnung nicht mehr! Irgendwo habe ich da nen Denkfehler drin ! Könnt ihr mir helfen ? Code: [AUSKLAPPEN] ;-Datenbank aller ressourcen Dim produktion$(50,5) Dim produktion_tmp$(50,5) ;- " neu berechnung ;-- produktion$(num,0)= 500 produktion$(num,1)= 200 produktion$(num,2)= 50 produktion$(num,3)= 2010 produktion$(num,4)= "haus" produktion$(num,5)= 10 num = num + 1 ;------------- produktion$(num,0)= 100 produktion$(num,1)= 300 produktion$(num,2)= 20 produktion$(num,3)= 2005 produktion$(num,4)= "Fabrik" produktion$(num,5)= 5 num = num + 1 ;----------- produktion$(num,0)= 700 produktion$(num,1)= 500 produktion$(num,2)= 120 produktion$(num,3)= 20012 produktion$(num,4)= "test" produktion$(num,5)= 12 num = num + 1 ;----------- ;Print "NUM" + num window=CreateWindow("Window",100,100,300,300,0) produktion_LB=CreateListBox(10,10,200,50,window) loe = CreateButton("löschen",10,90,100,20,window,0) ;--------------------------------------------------- For i = 0 To 10 If produktion$(i,5) > 0 Then AddGadgetItem produktion_LB, produktion$(i,4) +" noch: " + produktion$(i,5) + " Monate" Next ;------------------------------***** Start der Hauptschleife ********-------- Repeat Select WaitEvent() Case $401 ;------------------Eintrag aus Produktionsliste löschen If EventSource()=loe Then auswahl=SelectedGadgetItem(produktion_LB) ;-String werte in Integers zum Rechnen Umwandeln umwandlung_string0% = produktion$(auswahl,0) umwandlung_string1% = produktion$(auswahl,1) umwandlung_string2% = produktion$(auswahl,2) ;--- RemoveGadgetItem produktion_LB, auswahl ;-ausgewählte löschen Anzahl=CountGadgetItems (produktion_LB) ;- Einträge Zählen ;--------------------neu Berechnung der DIM wert1% = 0 For i=0 To 50 If wert1% < auswahl Then ;- Alle Einträge vor dem ausgewählten produktion_tmp$(wert1%,0) = produktion$(wert1%,0) produktion_tmp$(wert1%,1) = produktion$(wert1%,1) produktion_tmp$(wert1%,2) = produktion$(wert1%,2) wert1% = wert1% + 1 EndIf If wert1% > auswahl Then ;- Alle Einträge nach dem ausgewählten produktion_tmp$(wert1%-1,0) = produktion$(wert1%,0) produktion_tmp$(wert1%-1,1) = produktion$(wert1%,1) produktion_tmp$(wert1%-1,2) = produktion$(wert1%,2) EndIf If wert1% = auswahl Then ;- erster Ausgewählter Eintrag wert1% = wert1% + 1 EndIf Next Print "" ; überschreiben leerer einträge For i=0 To 50 If (i = anzahl) Or ( i > anzahl) Then ;- Bis gezählten oder grösser als gezählten produktion_tmp$(i,0)=0 produktion_tmp$(i,1)=0 produktion_tmp$(i,2)=0 EndIf Next wert1% = 0 For i=0 To 50 ; wieder in die originale DIM schreiben produktion$(wert1%,0) = produktion_tmp$(wert1%,0) produktion$(wert1%,1) = produktion_tmp$(wert1%,1) produktion$(wert1%,2) = produktion_tmp$(wert1%,2) wert1% = wert1% + 1 Next For i=0 To 5 ; alle ausgeben Print Print produktion$(i,0) Next num = num - 1 Print "NUM "+num ;---------------------- EndIf End Select If WaitEvent()=$803 Then End Forever |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde das mit Types lösen, das ist dann alles viel einfacher!
da braucht du dann nicht mit Temp und sowas arbeiten! Was mir spontan aufgefallen ist: 2x Waitevent() Denn bei Waitevent() bleibt das Programm stehen und warten darauf das etwas passiert, darum kommt auch der Fehler das man öfter auf löschen klicken muß damit es auch funzt! Wenn du ein Array Eintrag löschen willst und alle darauf folgenden sollen nachrücken, dann nimm eine Schleife Code: [AUSKLAPPEN] MaxEintraege = 10
Dim produktion$(MaxEintraege,5) For t= 0 To MaxEintraege produktion$(t,0) = T Print produktion$(t,0) Next eintragloeschenNR = 0 ; je nachdem welcher gelöscht wird hier mal 0 ;#################### __ Neu organisieren For i = eintragloeschenNR+1 To MaxEintraege produktion$(i-1,0) = produktion$(i,0) ; eintarg verschieben produktion$(i-1,1) = produktion$(i,1) ; eintarg verschieben produktion$(i-1,2) = produktion$(i,2) ; eintarg verschieben produktion$(i,0) = 0 ; eintrag Löschen da verschoben produktion$(i,1) = 0 ; eintrag Löschen da verschoben produktion$(i,2) = 0 ; eintrag Löschen da verschoben Next Print "nachher" For t= 0 To MaxEintraege Print produktion$(t,0) Next WaitKey |
||
[BB2D | BB3D | BB+]
|
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group