Page 1 of 2 1 2 LastLast
Results 1 to 15 of 22

Thread: Raar probleem

  1. #1

    Raar probleem

    Als ik in het programma een boolean gebruik in een array loopt het programma vast.
    t/m 4 gaat alles goed, maar kies ik voor de 5 dan loopt alle vast.
    Bv
    sensor[4]:= true geen probleem
    sensor[5]:= true programma loopt vast
    maar sensor[5]:= false geen probleem

    Verander ik de boolean in b.v een Byte dan krijg ik het zelfde probleem
    Bv
    sensor[4]:= 1 geen probleem
    sensor[5]:= 0 geen probleem
    sensor[5]:= 1 programma loopt vast

    Gr Theo

  2. #2
    En hoe groot is die array? Hoe heb je die gedeclareerd?
    1+1=b

  3. #3
    Quote Originally Posted by GolezTrol View Post
    En hoe groot is die array? Hoe heb je die gedeclareerd?
    De array loopt van 1 t/m 5.
    Ook hier heb ik naar gekeken, als ik hem namelijk b.v. van 1 naar 10 maak blijft het probleem bestaan.

    Het gekke is, dat als ik hem false maak, blijft alles werken.

  4. #4
    Wat is 'loopt vast'?
    Loopt ie ook echt vast op die regel of verder in het programma?

    Zonder meer code op welk punt je programma vastloopt kunnen wij natuurlijk niet veel zeggen.

    (Loop door je code heen met de debugger)

  5. #5
    Quote Originally Posted by rvk View Post
    Wat is 'loopt vast'?
    Loopt ie ook echt vast op die regel of verder in het programma?

    Zonder meer code op welk punt je programma vastloopt kunnen wij natuurlijk niet veel zeggen.

    (Loop door je code heen met de debugger)
    Het programma loopt helemaal vast, ik krijg deze melding:
    Project ...exe raised exception class EAccessViolation
    Accesviolation at address 00404E5B Read of address FFFFFFFD

  6. #6
    En loopt ie vast op exact die regel?

    Zonder de relevante code kunnen we echt alleen maar gissen.

  7. #7
    Quote Originally Posted by rvk View Post
    En loopt ie vast op exact die regel?

    Zonder de relevante code kunnen we echt alleen maar gissen.
    Nee, als ik de opdracht Sensor[5]:=true helemaal naar voren plaats in de eerste procedure "create" en ook nog als eerste regel, dan blijft het probleem bestaan.

    Ik kan wel nieuwe variabele aanmaken, alleen ze werken niet, krijg gelijk weer die vastloper.

    Het is een heel raar probleem.

  8. #8
    Gelukkig hebben we hier allemaal een glazen bol zodat we je code kunnen raden .....

  9. #9
    Member Duiker's Avatar
    Join Date
    May 2020
    Location
    Hamont-Achel (Belgie)
    Posts
    36
    Plaats even een vereenvoudigd stuk code wat het probleem weergeeft. Vaak los je zelf al het probleem op als je het vereenvoudigd.

  10. #10
    Quote Originally Posted by Duiker View Post
    Plaats even een vereenvoudigd stuk code wat het probleem weergeeft. Vaak los je zelf al het probleem op als je het vereenvoudigd.
    Een stukje van de code:

    Het vreemde is dat sensor 1 t/m 4 werkt en bij de 5e de error ontstaat. Ze zijn alle 5 op de zelfde manier gemaakt.



    procedure OpdrachtUitvoeren(Sender: TObject);
    procedure StartDienst(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    Stand :array[1..37] of string;
    zichtbaar :array[1..37] of Byte;
    Actie :integer;
    Naam, Tekening :string;
    Rechts, Onder :array[1..37] of Integer;
    Teller :Byte;
    Sensor, HSensor :array[1..6] of Boolean;
    Bloktaak :array[1..40] of string;
    BlokVast, BlokLos :array[1..40] of integer;
    Blokactief :byte;
    WBNaam :array[1..62] of string[5];

    implementation



    ++++++++++++++++++++++++++En dan verder in het programma

    If Image34.Visible=true and ReadDigitalChannel(1)<>Sensor[1] then begin Sensor[1]:=ReadDigitalChannel(1);
    If Sensor[1]=true then Image34.Picture.LoadFromFile('Tekeningen/Sen1b.bmp');
    If Sensor[1]=false then Image34.Picture.LoadFromFile('Tekeningen/Sen1a.bmp'); end;
    If Image35.Visible=true and ReadDigitalChannel(2)<>Sensor[2] then begin Sensor[2]:=ReadDigitalChannel(2);
    If Sensor[2]=true then Image35.Picture.LoadFromFile('Tekeningen/Sen2b.bmp');
    If Sensor[2]=false then Image35.Picture.LoadFromFile('Tekeningen/Sen2a.bmp'); end;
    If Image36.Visible=true and ReadDigitalChannel(3)<>Sensor[3] then begin Sensor[3]:=ReadDigitalChannel(3);
    If Sensor[3]=true then Image36.Picture.LoadFromFile('Tekeningen/Sen3b.bmp');
    If Sensor[3]=false then Image36.Picture.LoadFromFile('Tekeningen/Sen3a.bmp'); end;
    If Image37.Visible=true and ReadDigitalChannel(4)<>Sensor[4] then begin Sensor[4]:=ReadDigitalChannel(4);
    If Sensor[4]=true then Image37.Picture.LoadFromFile('Tekeningen/Sen4b.bmp');
    If Sensor[4]=false then Image37.Picture.LoadFromFile('Tekeningen/Sen4a.bmp'); end;
    If Image38.Visible=true and ReadDigitalChannel(5)<>Sensor[5] then begin Sensor[5]:=ReadDigitalChannel(5);
    If Sensor[5]=true then Image38.Picture.LoadFromFile('Tekeningen/Sen5b.bmp');
    If Sensor[5]=false then Image38.Picture.LoadFromFile('Tekeningen/Sen5a.bmp'); end;
    If Sensor[1]=true then begin HSensor[1]:=true; form4.Shape1.Brush.Color:=Clyellow; end;
    If Sensor[2]=true then begin HSensor[2]:=true; form4.Shape2.Brush.Color:=Clyellow; end;
    If Sensor[3]=true then begin HSensor[3]:=true; form4.Shape3.Brush.Color:=Clyellow; end;
    If Sensor[4]=true then begin HSensor[4]:=true; form4.Shape4.Brush.Color:=Clyellow; end;
    If Sensor[5]=true then begin HSensor[5]:=true; form4.Shape5.Brush.Color:=Clyellow; end; {}


    Hier ontstaat de error, als ik HSensor[5]:=false maak heb ik geen error




    Bericht 1 van 109

  11. #11
    Zet eens een showmessage('1'); voor deze code en showmessage('2'); na deze code.
    Krijg je beide te zien bij het uitvoeren VOOR de crash of krijg je alleen de eerste te zien.

    In het eerste geval ligt je fout ergens anders.

  12. #12
    Quote Originally Posted by rvk View Post
    Zet eens een showmessage('1'); voor deze code en showmessage('2'); na deze code.
    Krijg je beide te zien bij het uitvoeren VOOR de crash of krijg je alleen de eerste te zien.

    In het eerste geval ligt je fout ergens anders.


    Ik krijg ze allebei te zien, showmessage('1') en showmessage('2');

  13. #13
    Member Duiker's Avatar
    Join Date
    May 2020
    Location
    Hamont-Achel (Belgie)
    Posts
    36
    Onderstaande werkt hier zonder error. Wel heb ik wat meer code weg gehaald die er in mijn beleving niet toe doet. Door wat haakjes weg te halen kan je de sensor waarde beinvloeden. Kijk er eens naar.

    Delphi Code:
    1. unit Main;
    2.  
    3. interface
    4.  
    5. uses
    6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
    8.  
    9. type
    10.   TMainForm = class(TForm)
    11.     procedure FormCreate(Sender: TObject);
    12.   private
    13.     { Private declarations }
    14.   public
    15.     { Public declarations }
    16.   end;
    17.  
    18. var
    19.   MainForm: TMainForm;
    20.   Stand :array[1..37] of string;
    21.   zichtbaar :array[1..37] of Byte;
    22.   Actie :integer;
    23.   Naam, Tekening :string;
    24.   Rechts, Onder :array[1..37] of Integer;
    25.   Teller :Byte;
    26.   Sensor, HSensor :array[1..6] of Boolean;
    27.   Bloktaak :array[1..40] of string;
    28.   BlokVast, BlokLos :array[1..40] of integer;
    29.   Blokactief :byte;
    30.   WBNaam :array[1..62] of string[5];
    31.  
    32. implementation
    33.  
    34. {$R *.dfm}
    35.  
    36. procedure TMainForm.FormCreate(Sender: TObject);
    37. begin
    38.   {
    39.   Sensor[1] := true;
    40.   Sensor[2] := true;
    41.   Sensor[3] := true;
    42.   Sensor[4] := true;
    43.   Sensor[5] := true;
    44.   }
    45.   {
    46.   Sensor[1] := false;
    47.   Sensor[2] := false;
    48.   Sensor[3] := false;
    49.   Sensor[4] := false;
    50.   Sensor[5] := false;
    51.   }
    52.   If Sensor[1]=true then begin HSensor[1]:=true; end;
    53.   If Sensor[2]=true then begin HSensor[2]:=true; end;
    54.   If Sensor[3]=true then begin HSensor[3]:=true; end;
    55.   If Sensor[4]=true then begin HSensor[4]:=true; end;
    56.   If Sensor[5]=true then begin HSensor[5]:=true; end;
    57.  
    58. end;
    59.  
    60. end.

  14. #14
    Quote Originally Posted by Hengelmolen View Post
    Ik krijg ze allebei te zien, showmessage('1') en showmessage('2');
    Dus je probleem ligt gewoon verderop in je programma.
    En zonder code weten wij ook niet waar.

    Plaats anders eens meer showmessage meldingen om te zien waar.

    En geeft de IDE ook niet aan waar je die exception krijgt?

  15. #15
    Quote Originally Posted by rvk View Post
    Dus je probleem ligt gewoon verderop in je programma.
    En zonder code weten wij ook niet waar.

    Plaats anders eens meer showmessage meldingen om te zien waar.

    En geeft de IDE ook niet aan waar je die exception krijgt?
    Ik denk dat ik het probleem gevonden heb, ik heb de opdrachten wat meer over de tijd verdeelt.
    De opdrachten heb ik in 4 delen per seconde gezet. In het laatste tijdsdeel zaten te veel opdrachten van en naar de USB toe.
    Door het verplaatsen van opdrachten uit tijdsdeel4 naar tijdsdeel3 werkt het programma wel, althans daar lijkt het nu op.
    Nog even verder testen of dit het ook echt is (je moet voozichtig zijn), maar ik laat het nog weten.

    Gr Theo

Page 1 of 2 1 2 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •