AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi erstes Element aus dynamischem Array löschen
Thema durchsuchen
Ansicht
Themen-Optionen

erstes Element aus dynamischem Array löschen

Ein Thema von TheAn00bis · begonnen am 3. Sep 2005 · letzter Beitrag vom 4. Sep 2005
 
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#8

Re: erstes Element aus dynamischem Array löschen

  Alt 3. Sep 2005, 15:34
Danke!

Kommen zwar immer noch ständig die besagten Fehlermeldungen, aber das wird dann wohl woanders dran liegen.

Ich kann das Programm ja mal kurz erklären:

20Ampeln (können auch nur 2 sein, je nach belieben) sind auf dem Bildschrim, die alle zufalls geschaltet sind und die schalten endlos vor sich hin (also rot, grün, gelb).

Immer wenn eine Ampel grün ist, muss der Benutzer auf einen Knopf im der Main-Form klicken und dann wird die Reaktionszeit in eine Listbox geschrieben.

Was das Programm macht sollte geklärt sein, jetzt das Wie?:

Jede Ampel ist vollkommen selbstständig und sendet nur einen Befehl and die Main-Form, damit sich diese die Zeit merkt. Und dies tut sie, in dem sie das Array "Zeiten" um 1vergrößert und in das letzte Element den aktuellen gettickcount schreibt.

Klickt der Benutzer dann auf den Knopf, so wird immer das erste Element aus dem Arry vom aktuellen gettickcount subtrahiert. Das Ergebnis kommt in die Listbox.

Ich habe das ganze gerade mit nur einer Ampel ausprobiert, manchmal klappt alles einwandfrei, dann lasse ich die Ampel 5mal durchlaufen und klicke immer bei grün auf den Button und die Zeiten werden eingetragen, doch dann irgendwann kommt "Exception EInvalidPointer in module...". Es tritt immer vollkommen zufällig auf. Selbst bei nur einer Ampel. Ich hab keine Ahnung was das sein kann.

Hier mal die wichtigsten Proceduren:

Delphi-Quellcode:
procedure TMain.loesche;
var i,l: Integer;
begin
for i := 0 to high(zeiten) do
  zeiten [i] := zeiten[i +1];

l:=length(zeiten);
setlength(zeiten,l-1);
end;

procedure TMain.Button1Click(Sender: TObject); //Button der die Ampeln erstellt
begin
inc(i);
Ampel:= TAmpel.Create(Main,('Ampel'+inttostr(i)),i);
TAmpel(FindComponent('Ampel'+inttostr(i))).ein;
end;

procedure TMain.istGruen; //wird von den Ampeln aufgerufen, sobald sie grün sind
var s:integer;
begin
s:=length(zeiten);
setlength(zeiten,s+1);
zeiten[s+1]:=gettickcount;
gruen:=true;
end;

procedure TMain.Button2Click(Sender: TObject); {muss vom User geklickt werden, wenn eine Ampel auf grün schaltet}
var zeit:integer;
begin
if gruen then begin
zeit:=(gettickcount-zeiten[1]);
Listbox1.items.Add(inttostr(zeit)+'ms');
loesche;
gruen:=false;
end;
Wäre toll, wenn sich das jemand anschauen könnte.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz