Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Delphi Fehler "Privilegierte Anweisung"/Zugriffsverletzung (https://www.delphipraxis.net/128361-fehler-privilegierte-anweisung-zugriffsverletzung.html)

Samufi 28. Jan 2009 15:29


Fehler "Privilegierte Anweisung"/Zugriffsverletzun
 
Hallo,
ich weiß, dass es schon viele andere Beiträge zu dem Thema gibt, ich habe sie aber leider nicht auf mein Problem anwenden können. Es wurde geschrieben, dass das Problem z.B. dann auftritt, wenn eine Variable benutzt wird, die vorher nicht deklariert wurde oder wenn das Programm eine ihm nicht erlaubte Sache ausführt. Beides trifft meines Wissens nicht auf meine Prozedur zu...
Delphi-Quellcode:
var I, Anzahl,Temp:Integer; MEdit:TEdit;
begin
Anzahl:=0;
for I := 0 to ListboxInhalt.Count - 1 do
  begin
    if ListBoxInhalt.Selected[I]=true then
      begin
        Temp:=Anzahl+1;
        Anzahl:=Temp;
        MEdit:=TEdit.Create(HauptUnit.Form1);
        MEdit.Visible:=false;
        MEdit.Name:='MarkiertEdit'+InttoStr(Anzahl);
        MEdit.Parent:=HauptUnit.Form1;
        MEdit.Text:=InttoStr(I);
        MEdit.free;
      end;
  end;
for I := 1 to Anzahl do
  begin
    Temp:=StrtoInt(TEdit('MarkiertEdit'+InttoStr(I)).text);
    ListboxInhalt.Items[Temp]:=HauptUnit.Form1.Inhalt.Text;
    ListboxCode.Items[Temp]:=HauptUnit.Form1.Code.Text;
   end;
Temp:=StrtoInt(TEdit('MarkiertEdit'+InttoStr(Anzahl)).text);
if ListboxInhalt.Count-1>Temp then ListboxInhalt.selected[Temp+1]:=true else NeueZeile.Click;
for I := 1 to Anzahl do
  begin
    TEdit('MarkiertEdit'+InttoStr(I)).free;
  end;
end;
Vielleicht seht ihr ja den Fehler, danke aber schon fürs Suchen!
Treuergebenst,
Samufi

mkinzler 28. Jan 2009 15:41

Re: Fehler "Privilegierte Anweisung"/Zugriffsverle
 
Schau mal im Debugger, in welcher Zeiel der Fehler auftritt.

hoika 28. Jan 2009 15:41

Re: Fehler "Privilegierte Anweisung"/Zugriffsverle
 
Hallo,

in Zeile 10 erzeugst den den MEdit, in Zeile 15 wird er wieder gelöscht (MEdit.Free);
Und in der Zeile 28 nochmal das Free.

Ausserdem ist der Zugriff direkt auf HauptUnit.Form1 nicht sehr schön.
Übergabe der Methode doch alles, was sie braucht in Parametern.


Heiko

Samufi 28. Jan 2009 15:58

Re: Fehler "Privilegierte Anweisung"/Zugriffsverle
 
Danke für die schnellen Antworten! Wo muss ich da nachschauen, um zu sehen, in welcher Zeile der Fehler auftritt (hab ich noch nie gemacht)?
Das Free bezieht sich ja beim ersten Mal auf meine Variable MEdit und dann auf das Edit MarkiertEditI. Ich habe es aber schon ohne das MEdit.free probiert, da wird dann aber eine Zugriffsverletzung gemeldet...

DeddyH 28. Jan 2009 16:01

Re: Fehler "Privilegierte Anweisung"/Zugriffsverle
 
Setz einen Haltepunkt auf die erste Zeile und stepp dann zeilenweise mit F8 durch.

Samufi 28. Jan 2009 16:09

Re: Fehler "Privilegierte Anweisung"/Zugriffsverle
 
Wie setze ich einen Haltepunkt? (Tut mir Leid, ich hab wirklich keine Ahnung...)

DeddyH 28. Jan 2009 16:12

Re: Fehler "Privilegierte Anweisung"/Zugriffsverle
 
Zeile markieren Eingabecursor in die betreffende Zeile setzen und dann F5 (wenn ich nicht irre, hab gerade kein Delphi verfügbar).

Samufi 28. Jan 2009 16:30

Re: Fehler "Privilegierte Anweisung"/Zugriffsverle
 
Ich habe damit keienen Fehler gefunden... Aber mir ist aufgefallesn, dass ich die ganze Sache umgehen kann. So hat sich das wohl erledigt (obwohl es trotzdem interessant gewesen wäre) Ich bitte vielmals um Entschuldigung!

xZise 28. Jan 2009 19:20

Re: Fehler "Privilegierte Anweisung"/Zugriffsverle
 
Hallo,
ist es möglich ein String in ein Valides TEdit zu casten:
Ich beziehe mich da auf die Zeilen 20, 24 und 28.

MfG
xZise

mkinzler 28. Jan 2009 19:24

Re: Fehler "Privilegierte Anweisung"/Zugriffsverle
 
So nicht. Du müsstest dir zuerst eine Referenz auf das Control mit .FindControl() holen.
Ich würde zudem StrToIntDef() für die Konvertierung verwenden, da man ja nicht sicher sein kann, das etwas Brauchbares im Edit steht


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 Uhr.
Seite 1 von 2  1 2      

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