Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Bitte CODE prüfen - bekomme Immer eine Zugriffsverletzung??? (https://www.delphipraxis.net/125399-bitte-code-pruefen-bekomme-immer-eine-zugriffsverletzung.html)

Hawkeye219 5. Dez 2008 20:31

Re: Bitte CODE prüfen - bekomme Immer eine Zugriffsverletzun
 
Hallo,

liefert die Funktion tsrGetSpeakers wirklich alle Informationen oder füllt sie das übergebene Array nur mit IDs? Die Beschreibung der Schnittstelle in diesem Beitrag lässt auf letzteres schließen.

Gruß Hawkeye

SimStar001 5. Dez 2008 20:51

Re: Bitte CODE prüfen - bekomme Immer eine Zugriffsverletzun
 
Danke für den Link, ich glaube genau das problem habe ich auch!

kann es vielleicht auch daran liegen wie dort geschireben wurde?

Zitat:

Moin Sko,

ich würde den Timer zu Beginn der OnTimer-Routine ab-, und nach der Abarbeitung wieder einschalten. (so ähnlich hab' ich das heute doch schon 'mal geschrieben Grübelnd... Wink)

Delphi-Quellcode: markieren
begin
PopupTimer.Enabled := false;
try
// hier der eigentliche Code für die OnTimer Routine
finally
PopupTimer.Enabled := true;
end;
end;


Damit verhinderst Du, dass die Routine erneut aufgerufen wird, bevor sie abgearbeitet wurde.
Es könnte gut sein, dass die Routine länger als eine Sekunde braucht...

Ich werde diese Lösung zumindest erstmal mit einbeziehen und dann weiter testen und natürlich die TSRemote.dll die dort zur verfügung steht nutzen!

Zur zeit läuft das programm mal wieder seit mehr als 20 mins stabil ohne fehler!? :gruebel:

Blup 8. Dez 2008 09:30

Re: Bitte CODE prüfen - bekomme Immer eine Zugriffsverletzun
 
Delphi-Quellcode:
type Player_ = record
      ID : integer;
      Name : string;
      end;

var Player : array of player_;

function DoGetSpeakers : pchar;
  {...}
        result := pchar(player[u].Name);
Ich vermute die Fehlerursache ist bei der Verwendung von PChar zu suchen.
Dynamische Arrays können unter Umständen im Speicher verschoben werden, insbesondere wenn sich die Anzahl der Elemente vergrößert.
Den Rückgabewert unbedingt auf String ändern. Prüfen, wo es noch ähnlichen Schwachstellen gibt.
Zugriffsverletzungen treten leider nicht immer dort auf, wo diese verursacht werden.

SimStar001 17. Jan 2009 08:41

Re: Bitte CODE prüfen - bekomme Immer eine Zugriffsverletzun
 
Das problem liegt darin, dass ich den rueckgabewert leider nicht aendern kann, da die funktion in der TSRemote.dll liegt, auf die iach keinen einfluss habe... oder gibt es noch eine andere moeglichkeit?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 Uhr.
Seite 3 von 3     123   

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