Autor Beitrag
Conny Drexler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44


D6 prof. win xp
BeitragVerfasst: Mi 11.04.07 11:01 
Hallo zusammen,

kann mir jemand sagen, warum mein Programm auf einmal einen Fehler E/A 32 bei unten aufgeführter Stelle bringt? Kann das mit dem letzten Update von Windows zusammen hängen??? (Fehler bei Zeile 56)

ausblenden volle Höhe Delphi-Quelltext
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:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:
595:
596:
597:
598:
599:
600:
601:
602:
603:
604:
605:
606:
607:
608:
609:
610:
611:
612:
613:
614:
615:
616:
617:
618:
619:
620:
621:
622:
623:
624:
625:
626:
627:
628:
629:
630:
631:
632:
633:
634:
635:
636:
637:
638:
639:
640:
641:
642:
643:
644:
645:
646:
647:
648:
649:
650:
651:
652:
653:
654:
655:
656:
657:
658:
659:
660:
661:
662:
663:
664:
665:
666:
667:
668:
669:
670:
671:
672:
673:
674:
675:
676:
677:
678:
679:
680:
681:
682:
683:
684:
685:
686:
687:
688:
689:
690:
691:
692:
693:
694:
695:
696:
697:
698:
699:
700:
701:
702:
703:
704:
705:
706:
707:
708:
709:
710:
unit uupdate;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  uconst,uinit,utypen,ufehlermeldungen, StdCtrls,
  utest;

type
  Tfupdate = class(TForm)
    Lname: TLabel;
    Lvorname: TLabel;
    Lgeburtsdatum: TLabel;
    Label5: TLabel;
    lprozent: TLabel;
    gbletzteBestzeit: TGroupBox;
    lletzteBestzeitdatum: TLabel;
    lletztebestzeitzeit: TLabel;
    gbzupruefendesergebnis: TGroupBox;
    lzupruefendesergebnisdatum: TLabel;
    lzupruefendesergebniszeit: TLabel;
    Label1: TLabel;
    labsolut: TLabel;
    lzupruefendezeitstrecke: TLabel;
    lletztebestzeitstrecke: TLabel;
  private
    { Private-Deklarationen}
  public
    { Public-Deklarationen}
  end;

const uupdate_const = '1.05/041014';

var
  fupdate: Tfupdate;
  bergebnis : tergebnis;
  aenderung : real;

procedure letztezeiten_update(ergebnis:tergebnis);
procedure letzte_bestzeitenupdate(ergebnis:tergebnis);
procedure aktuellezeitenupdate(ergebnis:tergebnis);
procedure jahresbestzeitenupdate(ergebnis:tergebnis);
procedure bestzeitenupdate(ergebnis:tergebnis);


implementation

{$R *.DFM}

procedure letztezeiten_update(ergebnis:tergebnis);
var letztezeiten_ergebnis : tergebnis;
    letztezeiten_bestzeiten : tbestzeiten;
Begin

// Hier tritt der EA Fehler 32 auf

  assignfile(letztedatei,konfig.stammverzeichnis + '\' + letztedateiname);
  reset(letztedatei);
  bestzeiten_init(letztezeiten_bestzeiten);
  ergebnis_init(letztezeiten_ergebnis);
  seek(letztedatei,ergebnis.Schwimmer_nummer - 1);
  read(letztedatei,letztezeiten_bestzeiten);
  bestzeiten_test(letztezeiten_bestzeiten);
  case ergebnis.lange_bahn of
    true: Begin
            if letztezeiten_bestzeiten.lange_bahn[ergebnis.strecke] > 0 then
              Begin
                seek(ergebnisdatei,letztezeiten_bestzeiten.lange_bahn[ergebnis.strecke] - 1);
                read(ergebnisdatei,letztezeiten_ergebnis);
                if letztezeiten_ergebnis.Schwimmer_nummer <> ergebnis.Schwimmer_nummer then
                  Begin
                    showmessage('Fehler zwischen letzten Zeiten und zu prüfender Zeit');
//                    ergebnistest(ergebnis);
                    halt;
                  end
                else
                  Begin
                    if letztezeiten_ergebnis.Wettkampfdatum >= ergebnis.Wettkampfdatum then
                      letztezeiten_bestzeiten.lange_bahn[ergebnis.strecke] := letztezeiten_ergebnis.ergebnis_nummer;;
                  end;
              end
            else
              Begin
                letztezeiten_bestzeiten.lange_bahn[ergebnis.strecke] := ergebnis.ergebnis_nummer;
              end;
            seek(letztedatei,letztezeiten_bestzeiten.Schwimmer_Nummer - 1);
            write(letztedatei,letztezeiten_bestzeiten);
          end;
    false: Begin
            if letztezeiten_bestzeiten.kurze_bahn[ergebnis.strecke] > 0 then
              Begin
                seek(ergebnisdatei,letztezeiten_bestzeiten.kurze_bahn[ergebnis.strecke] - 1);
                read(ergebnisdatei,letztezeiten_ergebnis);
                if letztezeiten_ergebnis.Schwimmer_nummer <> ergebnis.Schwimmer_nummer then
                  Begin
                    showmessage('Fehler zwischen letzten Zeiten und zu prüfender Zeit');
//                    ergebnistest(ergebnis);
                    halt;
                  end
                else
                  Begin
                    if letztezeiten_ergebnis.Wettkampfdatum >= ergebnis.Wettkampfdatum then
                      letztezeiten_bestzeiten.kurze_bahn[ergebnis.strecke] := letztezeiten_ergebnis.ergebnis_nummer;;
                  end;
              end
            else
              Begin
                letztezeiten_bestzeiten.kurze_bahn[ergebnis.strecke] := ergebnis.ergebnis_nummer;
              end;
            seek(letztedatei,letztezeiten_bestzeiten.Schwimmer_Nummer - 1);
            write(letztedatei,letztezeiten_bestzeiten);
          end;

  end;  // of case


  closefile(letztedatei);
end;


procedure letzte_bestzeitenupdate(ergebnis:tergebnis);
var lbestzeiten : tbestzeiten;
Begin
  if (ergebnis.zeit > 0) and (ergebnis.offiziell) then
    Begin
      if ergebnis.schwimmer_nummer <= 0 then
        Begin
          showmessage(Schwimmernummer);
          exit;
        end;
      assignfile(lbestzeitendatei,konfig.stammverzeichnis + '\' + lbestDateiname);
      reset(lbestzeitendatei);
      seek(lbestzeitendatei,ergebnis.schwimmer_nummer - 1);
      bestzeiten_init(lbestzeiten);
      read(lbestzeitendatei,lbestzeiten);

      if lbestzeiten.Schwimmer_Nummer <> ergebnis.Schwimmer_nummer then
        Begin
          showmessage('Schwimmer <> Ergebnis (schwimmer)');
          closefile(lbestzeitendatei);
          halt;
        end;

      namens_init(person);
      seek(stammdatei,ergebnis.schwimmer_nummer - 1);
      read(stammdatei,person);

      fupdate.caption := 'Letzte lbestzeiten Update - ' + uupdate_const;
      fupdate.Lname.caption := person.n_name;
      fupdate.lvorname.caption := person.v_name;
      dummy_zeile := datetostr(person.geburtsdatum);
      fupdate.Lgeburtsdatum.caption := dummy_zeile;

    // Beschriftung der zu prüfenden Bestzeit gbzupruefendesergebnis
       //Streckenbezeichnung
           fupdate.lzupruefendezeitstrecke.Caption := ergebnis.Streckenbezeichnung;
       //Datum
                    dummy_zeile := datetostr(ergebnis.wettkampfdatum);
                    fupdate.lzupruefendesergebnisdatum.caption := trim(dummy_zeile);
                    str(ergebnis.jahrhundert,dummy_zeile);
                    fupdate.lzupruefendesergebnisdatum.Caption :=
                      trim(fupdate.lzupruefendesergebnisdatum.Caption);

       //Zeit
                    fupdate.lzupruefendesergebniszeit.caption := ergebnis.zeitstring;

      fupdate.Visible := true;
      fupdate.update;

      case ergebnis.lange_bahn of
        true: Begin
                if lbestzeiten.lange_bahn[ergebnis.strecke] > 0 then
                  Begin
                    ergebnis_init(bergebnis);
                    seek(ergebnisdatei,lbestzeiten.lange_bahn[ergebnis.strecke] - 1);
                    read(ergebnisdatei,bergebnis);

    // Beschriftung der alten Bestzeit bgletztebestzeit
       //Streckenbezeichnung
           fupdate.lletztebestzeitstrecke.Caption := ergebnis.Streckenbezeichnung;
       //Datum
                    dummy_zeile := datetostr(bergebnis.wettkampfdatum);
                    fupdate.lletzteBestzeitdatum.caption := trim(dummy_zeile);
                    str(bergebnis.jahrhundert,dummy_zeile);
                    fupdate.lletzteBestzeitdatum.Caption :=
                      trim(fupdate.lletzteBestzeitdatum.Caption);

       //Zeit
                    fupdate.lletztebestzeitzeit.caption := bergebnis.zeitstring;

    // neue Zeit (ergebnis) besser als gespeicherte (bergebnis) Zeit

                      if ergebnis.Wettkampfdatum >= bergebnis.Wettkampfdatum then
                        Begin
                          lbestzeiten.lange_bahn[ergebnis.strecke] :=
                            ergebnis.ergebnis_nummer;
                        end;

                     if bergebnis.zeit > 0 then
                       aenderung := (ergebnis.zeit * 100 / bergebnis.zeit) - 100;
                     str(aenderung:6:2,dummy_zeile);
                     dummy_zeile := trim(dummy_zeile) + '%';
                     fupdate.lprozent.caption := dummy_zeile;

                     aenderung := bergebnis.zeit - ergebnis.zeit;
                     str(aenderung:5:2,dummy_zeile);
                     dummy_zeile := trim(dummy_zeile) + ' sek';
                     fupdate.labsolut.caption := dummy_zeile;

                    fupdate.update;

                  end;


                if lbestzeiten.lange_bahn[ergebnis.strecke] = 0 then
                  Begin
                    lbestzeiten.lange_bahn[ergebnis.strecke] :=
                      ergebnis.ergebnis_nummer;
                  end;


                seek(lbestzeitendatei,lbestzeiten.schwimmer_nummer - 1);
                write(lbestzeitendatei,lbestzeiten);
              end;   (* of true = 50 m Bahn*)
       false: Begin
                if lbestzeiten.kurze_bahn[ergebnis.strecke] > 0 then
                  Begin
                    ergebnis_init(bergebnis);
                    seek(ergebnisdatei,lbestzeiten.kurze_bahn[ergebnis.strecke] - 1);
                    read(ergebnisdatei,bergebnis);

    // Beschriftung der alten Bestzeit bgletztebestzeit
       //Datum
                    dummy_zeile := datetostr(bergebnis.wettkampfdatum);
                    fupdate.lletzteBestzeitdatum.caption := trim(dummy_zeile);
                    str(bergebnis.jahrhundert,dummy_zeile);
                    fupdate.lletzteBestzeitdatum.Caption :=
                      trim(fupdate.lletzteBestzeitdatum.Caption);

       //Zeit
                    fupdate.lletztebestzeitzeit.caption := bergebnis.zeitstring;

    // neue Zeit (ergebnis) besser als gespeicherte (bergebnis) Zeit

                      if ergebnis.Wettkampfdatum >= bergebnis.Wettkampfdatum then
                        Begin
                          lbestzeiten.kurze_bahn[ergebnis.strecke] :=
                            ergebnis.ergebnis_nummer;
                        end;

                    fupdate.update;

                  end;


                seek(lbestzeitendatei,lbestzeiten.schwimmer_nummer - 1);
                write(lbestzeitendatei,lbestzeiten);
              end;   (* of false = 25 m Bahn*)
      end;
      closefile(lbestzeitendatei);
      fupdate.Visible := false;
   end;  // of ergebnis.zeit > 0

end;

procedure aktuellezeitenupdate(ergebnis:tergebnis);
Var aktual_datei : file of tbestzeiten;
    abestzeiten : tbestzeiten;
Begin
  if (ergebnis.zeit > 0) and (ergebnis.offiziell) then
    Begin
      if ergebnis.schwimmer_nummer <= 0 then
        Begin
          showmessage(Schwimmernummer);
          exit;
        end;
      assign(aktual_datei,konfig.stammverzeichnis + '\' + aktualdateiname);
      reset(aktual_Datei);
      ergebnis_init(bergebnis);
      bestzeiten_init(abestzeiten);
      seek(aktual_datei,ergebnis.schwimmer_nummer - 1);
      read(aktual_datei,abestzeiten);
      case ergebnis.lange_bahn of
        true : Begin
                 if abestzeiten.lange_bahn[ergebnis.strecke] > 0 then
                   Begin
                     seek(ergebnisdatei,abestzeiten.lange_bahn[ergebnis.strecke] - 1);
                     read(ergebnisDatei,bergebnis);
                     if ergebnis.Wettkampfdatum >= bergebnis.Wettkampfdatum then
                       Begin
                         letztezeiten_update(bergebnis);
                         abestzeiten.lange_bahn[ergebnis.strecke] :=
                           ergebnis.ergebnis_nummer;
                       end;
                   end;
                 if abestzeiten.lange_bahn[ergebnis.strecke] = 0 then
                   abestzeiten.lange_bahn[ergebnis.strecke] :=
                     ergebnis.ergebnis_nummer;
                 seek(aktual_datei,abestzeiten.Schwimmer_Nummer - 1);
                 write(aktual_Datei,abestzeiten);
               end;
        false: Begin
                 if abestzeiten.kurze_bahn[ergebnis.strecke] > 0 then
                   Begin
                     seek(ergebnisdatei,abestzeiten.kurze_bahn[ergebnis.strecke] - 1);
                     read(ergebnisDatei,bergebnis);
                     if ergebnis.Wettkampfdatum >= bergebnis.Wettkampfdatum then
                       Begin
                         letztezeiten_update(bergebnis);
                         abestzeiten.kurze_bahn[ergebnis.strecke] :=
                           ergebnis.ergebnis_nummer;
                       end;
                   end;
                 if abestzeiten.kurze_bahn[ergebnis.strecke] = 0 then
                   abestzeiten.kurze_bahn[ergebnis.strecke] :=
                     ergebnis.ergebnis_nummer;
                 seek(aktual_datei,abestzeiten.Schwimmer_Nummer - 1);
                 write(aktual_Datei,abestzeiten);
               end;
      end;
      close(aktual_Datei);
   end; // of ergebnis.zeit > 0
end;


procedure jahresbestzeitenupdate(ergebnis:tergebnis);
var  jahrstring : wort;
     jahresbestzeitendatei : file of tbestzeiten;
     jahresbestzeiten : tbestzeiten;
Begin
  if (ergebnis.zeit > 0) and (ergebnis.offiziell) then
    Begin
      if ergebnis.schwimmer_nummer <= 0 then
        Begin
          showmessage(Schwimmernummer);
          exit;
        end;
// Jahresbestzeitendatei öffnen

      jahrstring := datetostr(ergebnis.Wettkampfdatum);
      jahrstring := copy(jahrstring,pos('.',jahrstring) + 1,length(jahrstring));
      jahrstring := copy(jahrstring,pos('.',jahrstring) + 1,length(jahrstring));
      if length(trim(jahrstring)) = 2 then
        Begin
          str(ergebnis.jahrhundert:2,dummy_zeile);
          jahrstring := trim(dummy_zeile) + trim(jahrstring);
        end;
      if length(jahrstring) < 4 then
        Begin
          showmessage('Fehler beim Jahrhubdert!!!');
          halt;
        end;

      if not(fileexists(konfig.stammverzeichnis + '\' + jahrstring + '_' + bestdateiname)) then
        Begin
          assignfile(bestzeitendatei,konfig.stammverzeichnis + '\' + bestdateiname);
          reset(bestzeitendatei);
          assignfile(jahresbestzeitendatei,konfig.stammverzeichnis + '\' + jahrstring + '_' + bestdateiname);
          rewrite(jahresbestzeitendatei);
          while not(eof(bestzeitendatei)) do
            begin
              bestzeiten_init(bestzeiten);
              bestzeiten_init(jahresbestzeiten);
              read(bestzeitendatei,bestzeiten);
              jahresbestzeiten.Schwimmer_Nummer := bestzeiten.Schwimmer_Nummer;
              write(jahresbestzeitendatei,jahresbestzeiten);
            end;
          closefile(bestzeitendatei);
          closefile(jahresbestzeitendatei);
        end;

      jahrstring := datetostr(ergebnis.Wettkampfdatum);
      jahrstring := copy(jahrstring,pos('.',jahrstring) + 1,length(jahrstring));
      jahrstring := copy(jahrstring,pos('.',jahrstring) + 1,length(jahrstring));

      assignfile(jahresbestzeitendatei,konfig.stammverzeichnis + '\' + trim(jahrstring) + '_' + bestdateiname);
      reset(jahresbestzeitendatei);
      seek(jahresbestzeitendatei,ergebnis.schwimmer_nummer - 1);
      bestzeiten_init(jahresbestzeiten);
      read(jahresbestzeitendatei,jahresbestzeiten);

      if jahresbestzeiten.Schwimmer_Nummer <> ergebnis.Schwimmer_nummer then
        Begin
          showmessage('Schwimmer <> Ergebnis (schwimmer)');
          closefile(jahresbestzeitendatei);
          halt;
        end;

      namens_init(person);
      seek(stammdatei,ergebnis.schwimmer_nummer - 1);
      read(stammdatei,person);

      fupdate.caption := 'Jahresbestzeiten Update - ' + uupdate_const;
      fupdate.Lname.caption := person.n_name;
      fupdate.lvorname.caption := person.v_name;
      dummy_zeile := datetostr(person.geburtsdatum);
      fupdate.Lgeburtsdatum.caption := dummy_zeile;

    // Beschriftung der zu prüfenden Bestzeit gbzupruefendesergebnis
       //Streckenbezeichnung
           fupdate.lzupruefendezeitstrecke.Caption := ergebnis.Streckenbezeichnung;
       //Datum
                    dummy_zeile := datetostr(ergebnis.wettkampfdatum);
                    fupdate.lzupruefendesergebnisdatum.caption := trim(dummy_zeile);
                    str(ergebnis.jahrhundert,dummy_zeile);
                    fupdate.lzupruefendesergebnisdatum.Caption :=
                      trim(fupdate.lzupruefendesergebnisdatum.Caption);

       //Zeit
                    fupdate.lzupruefendesergebniszeit.caption := ergebnis.zeitstring;


      fupdate.update;
      fupdate.Visible := true;
      fupdate.update;

      case ergebnis.lange_bahn of
        true: Begin
                if jahresbestzeiten.lange_bahn[ergebnis.strecke] > 0 then
                  Begin
                    ergebnis_init(bergebnis);
                    seek(ergebnisdatei,jahresbestzeiten.lange_bahn[ergebnis.strecke] - 1);
                    if jahresbestzeiten.lange_bahn[ergebnis.strecke] - 1 <= filesize(ergebnisdatei) then
                      read(ergebnisdatei,bergebnis);

    // Beschriftung der alten Bestzeit bgletztebestzeit
       //Streckenbezeichnung
           fupdate.lletztebestzeitstrecke.Caption := ergebnis.Streckenbezeichnung;
       //Datum
                    dummy_zeile := datetostr(bergebnis.wettkampfdatum);
                    fupdate.lletzteBestzeitdatum.caption := trim(dummy_zeile);
                    str(bergebnis.jahrhundert,dummy_zeile);
                    fupdate.lletzteBestzeitdatum.Caption :=
                      trim(fupdate.lletzteBestzeitdatum.Caption);

       //Zeit
                    fupdate.lletztebestzeitzeit.caption := bergebnis.zeitstring;

    // neue Zeit (ergebnis) besser als gespeicherte (bergebnis) Zeit

                    if ergebnis.Zeit <= bergebnis.zeit then
//                      if ergebnis.Wettkampfdatum >= bergebnis.Wettkampfdatum then
                        Begin
                          jahresbestzeiten.lange_bahn[ergebnis.strecke] :=
                            ergebnis.ergebnis_nummer;

                          seek(jahresbestzeitendatei,jahresbestzeiten.schwimmer_nummer - 1);
                          write(jahresbestzeitendatei,jahresbestzeiten);

                        end;

                     if bergebnis.zeit > 0.001 then
                       aenderung := (ergebnis.zeit * 100 / bergebnis.zeit) - 100;
                     str(aenderung:6:2,dummy_zeile);
                     dummy_zeile := trim(dummy_zeile) + '%';
                     fupdate.lprozent.caption := dummy_zeile;

                     aenderung := bergebnis.zeit - ergebnis.zeit;
                     str(aenderung:5:2,dummy_zeile);
                     dummy_zeile := trim(dummy_zeile) + ' sek';
                     fupdate.labsolut.caption := dummy_zeile;

                    fupdate.update;

                  end;
                if jahresbestzeiten.lange_bahn[ergebnis.strecke] = 0 then
                  Begin
                    jahresbestzeiten.lange_bahn[ergebnis.strecke] :=
                      ergebnis.ergebnis_nummer;
                    seek(jahresbestzeitendatei,jahresbestzeiten.schwimmer_nummer - 1);
                    write(jahresbestzeitendatei,jahresbestzeiten);
                  end;
              end;   (* of true = 50 m Bahn*)

       false: Begin
                if jahresbestzeiten.kurze_bahn[ergebnis.strecke] > 0 then
                  Begin
                    ergebnis_init(bergebnis);
                    seek(ergebnisdatei,jahresbestzeiten.kurze_bahn[ergebnis.strecke] - 1);
                    read(ergebnisdatei,bergebnis);

    // Beschriftung der alten Bestzeit bgletztebestzeit
       //Datum
                    dummy_zeile := datetostr(bergebnis.wettkampfdatum);
                    fupdate.lletzteBestzeitdatum.caption := trim(dummy_zeile);
                    str(bergebnis.jahrhundert,dummy_zeile);
                    fupdate.lletzteBestzeitdatum.Caption :=
                      trim(fupdate.lletzteBestzeitdatum.Caption);

       //Zeit
                    fupdate.lletztebestzeitzeit.caption := bergebnis.zeitstring;

    // neue Zeit (ergebnis) besser als gespeicherte (bergebnis) Zeit

                    if ergebnis.Zeit <= bergebnis.zeit then
//                      if ergebnis.Wettkampfdatum >= bergebnis.Wettkampfdatum then
                        Begin
                          jahresbestzeiten.kurze_bahn[ergebnis.strecke] :=
                            ergebnis.ergebnis_nummer;
                          seek(jahresbestzeitendatei,jahresbestzeiten.schwimmer_nummer - 1);
                          write(jahresbestzeitendatei,jahresbestzeiten);
                        end;
                    fupdate.update;
                  end;
                if jahresbestzeiten.kurze_bahn[ergebnis.strecke] = 0 then
                  Begin
                    jahresbestzeiten.kurze_bahn[ergebnis.strecke] :=
                      ergebnis.ergebnis_nummer;
                    seek(jahresbestzeitendatei,jahresbestzeiten.schwimmer_nummer - 1);
                    write(jahresbestzeitendatei,jahresbestzeiten);
                  end;
              end;   (* of false = 25 m Bahn*)
      end;


      closefile(jahresbestzeitendatei);
      fupdate.Visible := false;

   end;    // of if ergebnis.zeit > 0;
end;  // of jahresbestzeitenupdate


                                     

procedure bestzeitenupdate(ergebnis:tergebnis);
Begin
  if (ergebnis.zeit > 0) and (ergebnis.offiziell) then
    Begin
      if ergebnis.schwimmer_nummer <= 0 then
        Begin
          showmessage(Schwimmernummer);
          exit;
        end;
      assignfile(bestzeitendatei,konfig.stammverzeichnis + '\' + bestdateiname);
      reset(bestzeitendatei);
      seek(bestzeitendatei,ergebnis.schwimmer_nummer - 1);
      bestzeiten_init(bestzeiten);
      read(bestzeitendatei,bestzeiten);

      if bestzeiten.Schwimmer_Nummer <> ergebnis.Schwimmer_nummer then
        Begin
          showmessage('Schwimmer <> Ergebnis (schwimmer)');
          closefile(bestzeitendatei);
          halt;
        end;

      namens_init(person);
      seek(stammdatei,ergebnis.schwimmer_nummer - 1);
      read(stammdatei,person);

      fupdate.caption := 'Bestzeiten Update - ' + uupdate_const;
      fupdate.Lname.caption := person.n_name;
      fupdate.lvorname.caption := person.v_name;
      dummy_zeile := datetostr(person.geburtsdatum);
      fupdate.Lgeburtsdatum.caption := dummy_zeile;

    // Beschriftung der zu prüfenden Bestzeit gbzupruefendesergebnis
       //Streckenbezeichnung
           fupdate.lzupruefendezeitstrecke.Caption := ergebnis.Streckenbezeichnung;
       //Datum
                    dummy_zeile := datetostr(ergebnis.wettkampfdatum);
                    fupdate.lzupruefendesergebnisdatum.caption := trim(dummy_zeile);
                    str(ergebnis.jahrhundert,dummy_zeile);
                    fupdate.lzupruefendesergebnisdatum.Caption :=
                      trim(fupdate.lzupruefendesergebnisdatum.Caption);

       //Zeit
                    fupdate.lzupruefendesergebniszeit.caption := ergebnis.zeitstring;


      fupdate.update;
      fupdate.Visible := true;
      fupdate.update;

      case ergebnis.lange_bahn of
        true: Begin
                if bestzeiten.lange_bahn[ergebnis.strecke] > 0 then
                  Begin
                    ergebnis_init(bergebnis);
                    seek(ergebnisdatei,bestzeiten.lange_bahn[ergebnis.strecke] - 1);
                    read(ergebnisdatei,bergebnis);

                    if bergebnis.Schwimmer_nummer <> ergebnis.Schwimmer_nummer then
                      showmessage('Bergebnis.Schwimmernummer <> Ergebnis.Schwimmernummer');

    // Beschriftung der alten Bestzeit bgletztebestzeit
       //Streckenbezeichnung
           fupdate.lletztebestzeitstrecke.Caption := ergebnis.Streckenbezeichnung;
       //Datum
                    dummy_zeile := datetostr(bergebnis.wettkampfdatum);
                    fupdate.lletzteBestzeitdatum.caption := trim(dummy_zeile);
                    str(bergebnis.jahrhundert,dummy_zeile);
                    fupdate.lletzteBestzeitdatum.Caption :=
                      trim(fupdate.lletzteBestzeitdatum.Caption);

       //Zeit
                    fupdate.lletztebestzeitzeit.caption := bergebnis.zeitstring;

    // neue Zeit (ergebnis) besser als gespeicherte (bergebnis) Zeit

                    if ergebnis.Zeit <= bergebnis.zeit then
                        Begin
                          bestzeiten.lange_bahn[ergebnis.strecke] :=
                            ergebnis.ergebnis_nummer;
                          if ergebnis.strecke  <> bergebnis.strecke then
                            showmessage('Bergebnis.Strecke <> ergebnis.Strecke');

                          seek(bestzeitendatei,bestzeiten.schwimmer_nummer - 1);
                          write(bestzeitendatei,bestzeiten);
                          bestzeiten_test(bestzeiten);
                        end;

                     if bergebnis.zeit > 0.001 then
                       aenderung := (ergebnis.zeit * 100 / bergebnis.zeit) - 100;
                     str(aenderung:6:2,dummy_zeile);
                     dummy_zeile := trim(dummy_zeile) + '%';
                     fupdate.lprozent.caption := dummy_zeile;

                     aenderung := bergebnis.zeit - ergebnis.zeit;
                     str(aenderung:5:2,dummy_zeile);
                     dummy_zeile := trim(dummy_zeile) + ' sek';
                     fupdate.labsolut.caption := dummy_zeile;

                    fupdate.update;

                  end;
                if bestzeiten.lange_bahn[ergebnis.strecke] = 0 then
                  Begin
                    bestzeiten.lange_bahn[ergebnis.strecke] :=
                      ergebnis.ergebnis_nummer;
                    seek(bestzeitendatei,bestzeiten.schwimmer_nummer - 1);
                    write(bestzeitendatei,bestzeiten);
                    bestzeiten_test(bestzeiten);
                  end;
              end;   (* of true = 50 m Bahn*)
        false: Begin
                if bestzeiten.kurze_bahn[ergebnis.strecke] > 0 then
                  Begin
                    ergebnis_init(bergebnis);
                    seek(ergebnisdatei,bestzeiten.kurze_bahn[ergebnis.strecke] - 1);
                    read(ergebnisdatei,bergebnis);

                    if bergebnis.Schwimmer_nummer <> ergebnis.Schwimmer_nummer then
                      showmessage('Bergebnis.Schwimmernummer <> Ergebnis.Schwimmernummer');

    // Beschriftung der alten Bestzeit bgletztebestzeit
       //Streckenbezeichnung
           fupdate.lletztebestzeitstrecke.Caption := ergebnis.Streckenbezeichnung;
       //Datum
                    dummy_zeile := datetostr(bergebnis.wettkampfdatum);
                    fupdate.lletzteBestzeitdatum.caption := trim(dummy_zeile);
                    str(bergebnis.jahrhundert,dummy_zeile);
                    fupdate.lletzteBestzeitdatum.Caption :=
                      trim(fupdate.lletzteBestzeitdatum.Caption);

       //Zeit
                    fupdate.lletztebestzeitzeit.caption := bergebnis.zeitstring;

    // neue Zeit (ergebnis) besser als gespeicherte (bergebnis) Zeit

                    if ergebnis.Zeit <= bergebnis.zeit then
                        Begin
                          bestzeiten.kurze_bahn[ergebnis.strecke] :=
                            ergebnis.ergebnis_nummer;
                          if ergebnis.strecke  <> bergebnis.strecke then
                            showmessage('Bergebnis.Strecke <> ergebnis.Strecke');

                          seek(bestzeitendatei,bestzeiten.schwimmer_nummer - 1);
                          write(bestzeitendatei,bestzeiten);
                          bestzeiten_test(bestzeiten);

                        end;

                     if bergebnis.zeit > 0.001 then
                       aenderung := (ergebnis.zeit * 100 / bergebnis.zeit) - 100;
                     str(aenderung:6:2,dummy_zeile);
                     dummy_zeile := trim(dummy_zeile) + '%';
                     fupdate.lprozent.caption := dummy_zeile;

                     aenderung := bergebnis.zeit - ergebnis.zeit;
                     str(aenderung:5:2,dummy_zeile);
                     dummy_zeile := trim(dummy_zeile) + ' sek';
                     fupdate.labsolut.caption := dummy_zeile;

                    fupdate.update;

                  end;
                if bestzeiten.kurze_bahn[ergebnis.strecke] = 0 then
                  Begin
                    bestzeiten.kurze_bahn[ergebnis.strecke] :=
                      ergebnis.ergebnis_nummer;
                    seek(bestzeitendatei,bestzeiten.schwimmer_nummer - 1);
                    write(bestzeitendatei,bestzeiten);
                    bestzeiten_test(bestzeiten);
                  end;
              end;   (* of true = 25 m Bahn*)

      end;

      closefile(bestzeitendatei);
      fupdate.Visible := false;
      letzte_bestzeitenupdate(bergebnis);
      aktuellezeitenupdate(ergebnis);
      jahresbestzeitenupdate(ergebnis);

   end;    // of if ergebnis.zeit > 0;
end;

end.


Hat jemand eine Idee warum und wie ich den FRehler umgehen kann???
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 11.04.07 11:08 
Hallo!

Umgehen? :shock:

Wo ist assignfile(letztedatei, ...) deklariert? :gruebel:

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 11.04.07 11:12 
Naja auf jedenfall liegt der Fehler darin, dass Delphi die Datei nicht öffnen kann, da sie bereits geöffnet/in Verwendung ist.

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.