Hi Delpher,
jetzt habe ich mal ein echtes "Logical".
Eine Schulklasse hat einen bestimmten Büchersatz bekommen. Eine andere Klasse hat (meistens) einen anderen Büchersatz.
Aber die gleiche Klasse hat ja wohl den gleichen Büchersatz.
Die Klassenbezeichnungen stehen in edit2 und in edit3.
Ich kann also, wenn ein Schüler die Klasse wechselt, die zu behaltenden Bücher bestimmen und die abzugebenden.
Meist geht es um ein Absteigen (früher Sitzenbleiben) oder einen Klassenwechsel innerhalb der Klassenstufe.
Aber wenn ich die gleiche Klasse untersuche - (vorher = nachher), sollten sie den gleichen Büchersatz haben.
Hier wird iwi das letzte Buch bei der Nach-Klasse "verschluckt" - und da ist der Logikfehler, den ich um's
Verrecken nicht sehe.
Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83:
| if gef1 and gef2 then begin TntMemo1.lines.clear; TntMemo1.Font.Size := 8; TntMemo1.lines.add('Es ergeben sich folgende Buchbewegungen:'); TntMemo1.lines.add(' '); anz12 := 0; anz21 := 0; tanz := 0; tanz := 10 * strtoint(BuchMain.QAusleihsatz.Fields[BuchMain.QAusleihsatz.fieldcount-1].fieldname[6]) + strtoint(BuchMain.QAusleihsatz.Fields[BuchMain.QAusleihsatz.fieldcount-1].fieldname[7]) ; for k := 1 to tanz do begin b12[k] := ''; b21[k] := ''; bsl[k] := ''; end;
TntMemo1.lines.add(' '); TntMemo1.lines.add('VON-Klasse '+edit2.text+' gefunden. Sie hat folgende Bücher: '); TntMemo1.lines.add(' '); n := BuchMain.QAusleihsatz.fieldbyname('TITEL01').FieldNo-1; repeat if BuchMain.QAusleihsatz.fields[n].asstring <> '' then begin b12[n-2] := BuchMain.QAusleihsatz.fields[n].asstring; TntMemo1.Lines.Add(b12[n-2]); inc(n); end; until (BuchMain.QAusleihsatz.fields[n].asstring = '') or (n = BuchMain.QAusleihsatz.fieldcount-1); anz12 := n-1; TntMemo1.lines.add(' '); TntMemo1.lines.add(' ');
TntMemo1.lines.add(' '); TntMemo1.lines.add('NACH-Klasse '+edit3.text+' gefunden. Sie hat folgende Bücher: '); TntMemo1.lines.add(' '); n := BuchMain.QAusleihsatz.fieldbyname('TITEL01').FieldNo-1; repeat if BuchMain.QAusleihsatz.fields[n].asstring <> '' then begin b21[n-2] := BuchMain.QAusleihsatz.fields[n].asstring; TntMemo1.Lines.Add(b21[n-2]); inc(n); end; until (BuchMain.QAusleihsatz.fields[n+1].asstring = '') or (n = BuchMain.QAusleihsatz.fieldcount-1); anz21 := n-1;
TntMemo1.lines.add(' '); TntMemo1.lines.add('Person behält folgende Bücher (in beiden Klassen gleich): '); n := 1; anz_nokb := 0; zz := 0; repeat ok := false; k := 1; repeat if b12[n] = b21[k] then begin ok := true; inc(zz); c[zz] := b12[n]; TntMemo1.lines.add(b12[n]); end else inc(k); until ok or (k = anz21+1); if ok = false then begin anz_nokb := anz_nokb+1; bvar1[anz_nokb] := b12[n]; end; inc(n); until n = anz12+1;
TntMemo1.lines.add(' '); TntMemo1.lines.add('Person gibt folgende Bücher ab (alte Klasse): '); if n > 0 then for n := 1 to anz_nokb do TntMemo1.lines.add(bvar1[n]); k := 1; anz_nokg := 0; repeat ok := false; n := 1; repeat if b12[n] = b21[k] then ok := true else inc(n); until ok or (n = anz12+1); if ok = false then begin anz_nokg := anz_nokg+1; bvar2[anz_nokg] := b21[k]; end; inc(k); until k = anz21+1;
TntMemo1.lines.add(' '); TntMemo1.lines.add('Person bekommt folgende Bücher (neue Klasse): '); if n > 0 then for n := 1 to anz_nokg do TntMemo1.lines.add(bvar2[n]); button13.SetFocus; end |
Jetzt sind die "Puristen" gefragt, glaube ich. Ich hoffe, das Problem habe ich dargestellt,
sonst bitte nachfragen.
Über eine Lösung würde ich mich wirklich sehr freuen.
Gruß, Detlef