Results 1 to 10 of 10

Thread: Hoe kan een Tpanel een AccessViolation fout gerereren?

  1. #1

    Hoe kan een Tpanel een AccessViolation fout gerereren?

    Hoe kan een Tpanel een AccessViolation fout gerereren? Iemand enig idee?
    Ik zie die fout niet op mijn computer, maar gebruikers van m'n applicatie (soms) wel...

    Alvast bedankt!
    Last edited by Dany; 26-Dec-22 at 14:32.
    Vriendelijke groeten,
    Dany

  2. #2
    Zonder code en context lijkt het me niet mogelijk om zo'n vraag te beantwoorden.

    Bart

  3. #3
    Bedankt voor de reply.
    Dat is nu juist het probleem, er is geen code die iets doet met het Tpanel. HetTpanel bevat wel een aantal andere componenten:2 toolbars met elk 4 toolbuttons, textlabels en 2 richedits. Is het mogelijk dat die componenten die op het Tpanel staan die AccessViolation kunnen veroorzaken?

    Waarom krijg ikzelf die foutmelding niet (ook niet in debug mode) en sommige anderen wel? Ik werk met Windows 7 en Delphi 10.1. In vorige versies van mijn programma heeft niemand ooit last gehad van die foutmelding.
    Er zit denk ik niets anders op dan de laatste wijzigingen 1 voor 1 terug te draaien en telkens te laten testen door iemand die last heeft van de fout.

    Project:sourceforge.net/projects/subtitle-workshop-classic
    Last edited by Dany; 02-Jan-23 at 22:12.
    Vriendelijke groeten,
    Dany

  4. #4
    Je moet het ook niet in dat panel zoeken.
    De foutmelding suggereert dat er een memory corruptie is.
    (Read address 0000004)
    De foutmelding kan dan het onverwachts zijn.

    Daarom gebruik ik de jcl debug info om precies te zien waar het mis gaat.

    Welke Window versies hebben er wel last van?

  5. #5
    Ik heb even gekeken of ik de foutmelding kreeg maar bij mij loopt het goed.

    MAAR. Als ik bijvoorbeeld de SubtitleWorkshop.exe kaal naar de desktop kopieren en vanuit daar run, dan krijg ik eerst een melding over een missend taalbestand.
    Daarna start het programma door.
    Sluit ik dan het programma dan krijg ik eenzelfde foutmelding als die andere.

    Je kunt zelf even kijken of jij dat ook krijgt en waar die fout zit.
    De fout die zij krijgen is eenzelfde soort fout.
    Je hebt op heel veel plaatsen dus hele slechte afhandeling van het niet vinden van bestanden.

    Click image for larger version. 

Name:	HcNw7bK.png 
Views:	39 
Size:	12.6 KB 
ID:	8293

  6. #6
    Hoi Rvk.
    Welbedankt voor de analyse.

    Je kunt zelf even kijken of jij dat ook krijgt en waar die fout zit.
    De fout die zij krijgen is eenzelfde soort fout.
    Je hebt op heel veel plaatsen dus hele slechte afhandeling van het niet vinden van bestanden.
    Ik zie dat je versie Subtitle Workshop 61.6. gebruikt hebt voor je testen. De fouten die je ziet zijn er al uit in versie 6.1.7. De reden was het gebruik van TMemIniFile in plaats van TIniFile. Die gedraagt zich namelijk erg anders als de inifile niet bestaat.
    De originele fout blijft wel, waarbij een TPanel de oorzaak zou zijn (als dat al zo is). Ikzelf kan die fout nog altijd niet reproduceren, maar die zit er wel nog in als ik sommige gebruikers mag geloven. Hopelijk testen zij met de goeie versie...
    Last edited by Dany; 03-Jan-23 at 22:18.
    Vriendelijke groeten,
    Dany

  7. #7
    Het ligt wel erg voor de hand dat ze ook die versie gebruiken.

    Waar komt überhaupt het idee vandaan dat het door een panel zou komen?
    1+1=b

  8. #8
    Quote Originally Posted by GolezTrol View Post
    Het ligt wel erg voor de hand dat ze ook die versie gebruiken.
    Waar komt überhaupt het idee vandaan dat het door een panel zou komen?
    Hoi, blijkbaar komen de foutmeldingen van 2 RichEdits die op dat TPanel staan.
    Bij het creeren van het form roep ik onderstaande procedure aan die van beiden de fontsize moeten zetten:

    Code:
    procedure ReSetFontSize(re: TRichEdit; Size_: integer); // Kameleon 2022-10-30
    var StoreStart: Integer;
        StoreLength: Integer;
    begin
      if re.Visible and re.Enabled then
      begin
        re.Font.Size := Size_;
        StoreStart := re.SelStart;
        StoreLength := re.SelLength;
    
        re.SelStart := 0;
        re.SelLength := Length(re.Text);
        re.SelAttributes.Size := Size_;
    
        re.SelStart := StoreStart;
        re.SelLength := StoreLength;
      end;
    end;
    De calls van de routine:
    Code:
    ReSetFontSize(mmoSubtitleText, Font.Size + 2); // v6.1.9 deleted, Kameleon 2023-03-10  cause of tthe problems in 6.1.6
    ReSetFontSize(mmoTranslation, Font.Size + 2);  // v6.1.9 deleted, Kameleon 2023-03-10  cause of tthe problems in 6.1.6
    Ik heb die calls moeten vervangen door:
    Code:
    mmoSubtitleText.Font.Size := Font.Size + 2; // Kameleon, added again 2023-03-10 v6.1.9
    mmoTranslation.Font.Size := Font.Size + 2; // Kameleon, added again 2023-03-10 v6.1.9
    Die code is ook goed zolang er geen inhoud is in de RichEdit.

    Blijkbaar zit er een eigenaardigheid in de TRichedit:
    Length(Seltext) kan verschillen van SelLength! Ik weet (nog) niet of dit hier het probleem opleverde. In een aantal plaatsen in m'n code heb ik dat moeten opvangen, maar bij een pas gecreerde component (zoals de 2 RichEdits waarvan sprake) zou dat geen probleem mogen zijn...

    Raar toch dat de fouten van het TPanel kwamen en niet van de Richedits.

    Iedereen bedankt voor het meedenken!
    Vriendelijke groeten,
    Dany

  9. #9
    Length(SelText) is de lente van SelText in bytes.
    SelLength is (gok ik) de lengte in "characters" ofwel Utf8Length?

  10. #10
    Ik zie eigenlijk ook niet het nut van deze regel.
    re.Font.Size := Size_;
    (voordat je de selstart ed opslaat)

    Die is toch niet nodig (of zelfs verkeerd)?

    (Niet dat dat overigens tot een/de fout zou leiden hoor.)

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
  •