AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung

Ein Thema von Hybrid666 · begonnen am 4. Jun 2008 · letzter Beitrag vom 4. Jun 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Zugriffsverletzung

  Alt 4. Jun 2008, 13:39
Zitat:
Access violation at Address <ADDRESSE>. Read of Address <ADRESSE>
Diese Adressen wären sehr sinnvoll zu wissen wenn du Hilfe erwartest.

Wenn ich bedenke das die Methode mehrfach aufgerufen wird ist es hier mehr als nur sinnvoll anstelle von FindComponent ein Array zu verwenden denn wie der Name schon sagt: FINDComponent - es wird also jedesmal gesucht. Ebenso könnte man auch überall ein Sleep rein schreiben um das ganze noch ein wenig auszubremsen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.273 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: Unbekannter Fehler

  Alt 4. Jun 2008, 13:39
Hallo

for J := 4 to 7 do

(TPanel (FindComponent ('p' + IntToStr (J + 3)


J=7 ergibt p10

10 als Zeile hast du aber gar nicht, oder ?.


Heiko
Heiko
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#13

Re: Zugriffsverletzung

  Alt 4. Jun 2008, 13:48
Wie schon angedeutet ist der jetzige Code der falsche Weg. Du hast hier massive Probleme und man diese deutlich darauf schieben, dass du in deinem Code-Design nicht Datenverarbeitung und Datendarstellung trennst. Deine Oberfläche soll nur die Daten darstellen, aber nicht halten oder als Basis der Verarbeitung dienen. Wäre dies beachtet worden, dann hättest du vllt. noch falsch angezeigte Oberflächenteile, aber immerhin einen richtigen Programmablauf mit dem richtig ermittelten Status (gewonnen, etc).

Also nochmals als eindringlicher Hinweis: Lege dir ein zweidimensionales Array an, wo du die Werte drin hälst und aktualisiere deine Panels entsprechend den Daten aus diesem Array.

Auch ist der Name einer Komponente Schall und Rauch und sollte niemals Einfluß auf den Programmablauf haben, ansonsten wäre es ein sicheres Zeichen, dass die Oberfläche nicht getrennt wäre. Somit: Lege dir als privaten Member ein 2-Dimensionales Array (oder eindimensional, also MOD/DIV nutzen) an in deiner Form, in der du die Panelinstanzen entsprechend hinterlegst. Danach kannst du beim aktualisieren der Oberfläche sogar direkt von Array-Element (Daten) zu Array-Element (Darstellung) arbeiten. Irgendwelche Unsicherheiten mit eventuell nicht gefundenen Panels sind damit schon von vornherein ausgeschlossen.

Wer FindComponent() und das nicht gerade in einem eigenen, allgemeinen GUI Streaming Clienten o.ä., der hat falsch programmiert. Diese Funktion ist langsam und wenn man sie dann noch falsch einsetzt (Rückgabewert überprüfen), dann kommt es zu solchen Fehlerausprägungen. Im Normalfall hat man seine nötigen Instanzen fest hinterlegt und arbeitet mit ihnen, aber sucht sie nicht ständig. Das wäre wie jeden Pinsel während des Zeichnens direkt auswaschen und verwahren um ihn dann alle paar Sekunden erneut aus dem Schrank zu holen zum Zeichnen und danach gleich wieder saubermachen und in den Schrank weglegen. Und wenn du schon selber sagst, dass die Routine ständig/oft aufgerufen wird, dann wäre spätestens dies das KO-Kriterium für FindComponent(), selbst bei Programmen ohne Daten/Oberflächentrennung.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Zugriffsverletzung

  Alt 4. Jun 2008, 13:52
Hihi...

ich erlaube mir mal ein einfaches 0815 Beispiel anzuhängen
Angehängte Dateien
Dateityp: zip dp-demo_123.zip (8,0 KB, 4x aufgerufen)
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#15

Re: Unbekannter Fehler

  Alt 4. Jun 2008, 13:57
Zitat von hoika:
Hallo

for J := 4 to 7 do

(TPanel (FindComponent ('p' + IntToStr (J + 3)


J=7 ergibt p10

10 als Zeile hast du aber gar nicht, oder ?.


Heiko
baum wald theorie -.- danke.

und zu dem ich könnte auch sleep einbaun: das issn kleines game, ich bin noch net sooo weit um programmieren und ich hab das game in paar stunden kurz runtergeschrieben und mir net allzuviele gedanken gemacht, also net so streng sein pls
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#16

Re: Zugriffsverletzung

  Alt 4. Jun 2008, 14:03
Zitat:
und zu dem ich könnte auch sleep einbaun
Ist das Spiel trotz FindComponent immer noch zu schnell?
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 01:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz