Autor Beitrag
Bismarck
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 30.08.02 18:42 
Moin,

so, ich feier meinen "Wiedereintritt" beim Delphi Board erst mal mit einer Frage, die nur Indirekt mit Delphi zu tun hat (Turbo Pascal ist doch der indirekte Verläufer von Delphi, oder?)

Mein Problem:

Ich habe einen großen Array am Anfang des Programms deklariert und will ihn dann in einer for-Schleife mit Daten Füllen. So weit, so gut...

Wenn ich die Schleife 100 mal durchlaufe geht alles gut. Durchlaufe ich sie 200 mal gehen einige Daten im Array verloren. Ab 300 Durchläufen bekomme ich Grafikfehler (Hintergrundfarbe bei der Anzeige ändert sich, Bildschirmausschnitt verschiebt sich etc...) Wenn die Schleife noch öfters durchlaufen wird kommt irgendwann der Fehler "Datei nicht geöffnet".

Könnt ihr damit was anfangen? Der Recher ist ein Escom Blackmate Laptop, 468er, 33 Mhz, 4 Mb RAM, ich benutze Turbo Pascal 5.5.

Wie kommen solche Feher zustande, was kann ich dagegen tun?

Vielen Dank im Vorraus, B.

_________________
Alle Angaben wie immer ohne Gewähr!
Arakis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 344



BeitragVerfasst: Fr 30.08.02 18:47 
Jau, du seist uns willkommen :D

Andere Frage vorweg: Welches Betriebssystem hast du? Vielleicht verkraftet es das nicht. Denn normaler weise dürfte in einem richtigen 32-Bit-Betriebssystem ein Programm nicht so deartige Fehler auf dem Bildschirm hervorbringen.

Bis dann
user defined image

_________________
Mit dem Computer löst man Probleme, die man ohne ihn nicht hätte.
Entwickler von SpaceTrek: The New Empire - Siehe Hompage!
Bismarck Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 30.08.02 18:52 
Moin,

welche Betriebssystem? das "Dirty Operation System", knallhart DOS 6.22 genannt. Ist aber 16 Bit, oder?

Ich kann mir das nicht erklähren, der Speicherplatz wird doch schon beim Programmstart reserviert, oder?

Servus, B.

_________________
Alle Angaben wie immer ohne Gewähr!
Arakis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 344



BeitragVerfasst: Fr 30.08.02 18:57 
Ach DOS, ja sag das doch gleich 8)
Höchstwahrscheinlich gerätst du in fremde Speicherbereiche. Benutzt du irgendeinen "wildgewordenen" Zeiger oder so? Poste die Schleife doch mal, wenn sich nicht zu groß ist.

Bis dann
user defined image

_________________
Mit dem Computer löst man Probleme, die man ohne ihn nicht hätte.
Entwickler von SpaceTrek: The New Empire - Siehe Hompage!
Bismarck Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 30.08.02 19:14 
Ok, hier ist die die Prozedur. Es wurden keine Pointer verwendet.


ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
rocedure Dateninit;
var x: integer; var ZwischenVariable: RECNamenstruktur;
 begin


  assign(Namendatei, 'C:\VfSNamen.bsp');
  reset(Namendatei);


  for x := 1 to 500 do NamenArray[x].MitgliedsNummer := 0;
  for x := 1 to 500 do SpeicherArray[x].existiert := false;
  for x := 1 to 500 do KommenGehenArray[x] := false;
  for x := 1 to 250 do                        (*Problem Schleife*)
   begin
    if eof(NamenDatei) = false then read(Namendatei, Zwischenvariable);
    if (Zwischenvariable.MitgliedsNummer <> 0) and (eof(NamenDatei) = false) then
     NamenArray[ZwischenVariable.Mitgliedsnummer] := Zwischenvariable;
   end;

  close(NamenDatei);

 end;



Interesiern euch auch noch die Variablentypen + Deklarationen? Falls ja, hier sind sie:

ausblenden volle Höhe 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:
type

RECNamenstruktur = record
 Name: Array [1..20] of Char;
 Vorname: Array [1..15] of Char;
 Gruppe: integer;
 Mitgliedsnummer: integer;
end;


RECSpeicherStruktur = record
 existiert: boolean;
 Ankunftszeit: Array [1..6] of Char;        
 Ausgangszeit: Array [1..6] of Char;
end;


RECSpeicherDateiInhalt = record
 Ankunftszeit: Array [1..6] of Char;
 Ausgangszeit: Array [1..6] of Char;
 Name: Array [1..20] of Char;
 Vorname: Array [1..15] of Char;
 Gruppe: Integer;
 Mitgliedsnummer: Integer;
end;

var PruefVariable: integer;
    Ausstieg: boolean;
    SpeicherArray: Array[1..500] of RECSpeicherStruktur;
    NamenArray: Array[1..500] of RECNamenstruktur;
    NamenDatei: file of RECNamenstruktur;
    KommenGehenArray: Array[1..500] of boolean;
    ComPortptr: Serialptr;
    SerialErrorCode: SerialErr;


Es sind keine Pointer dabei, ich bin mit meinem Latain am Ende...

Servus, B.

_________________
Alle Angaben wie immer ohne Gewähr!
Bismarck Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 01.09.02 17:45 
Moin,

sorry, das Ganze hat sich erledigt. Es war ein verschleppter Fehler aus nem anderen Programm, welches die .bsp Datei mit den Namen erstellt.

Das Problem ist zwar behoben, aber es erklärt immer noch nicht das Entstehen der Grafikfehle. Naja, wird wohl für immer ungeklärt bleiben...

Trotzdem danke für's Nachdenken,

Servus, B.

_________________
Alle Angaben wie immer ohne Gewähr!