Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Zugriffsverletzung (https://www.delphipraxis.net/126040-zugriffsverletzung.html)

ryLIX 17. Dez 2008 12:44

Re: Zugriffsverletzung
 
Zitat:

Zitat von milos
Ja ich habs probiert!

Auch versucht den Breakpoint später im Quelltext zu setzen?

milos 17. Dez 2008 12:46

Re: Zugriffsverletzung
 
Nein! Das Problem ist mit TConfig... Kann man ein Forumular löschen?

ryLIX 17. Dez 2008 13:02

Re: Zugriffsverletzung
 
Zitat:

Zitat von milos
Nein! Das Problem ist mit TConfig... Kann man ein Forumular löschen?

Natürlich kannst du das.
Einfach aus dem Projekt entfernen im Projektmanager.

Aber wenn der Fehler auftaucht wenn TConfig aufgerufen wird dürfte der Fehler dort in der Form.Create Methode liegen.
Poste doch mal den QT der TConfig Unit.

milos 17. Dez 2008 18:09

Re: Zugriffsverletzung
 
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  Tconfig = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  config: Tconfig;

implementation

{$R *.DFM}

procedure Tconfig.Button1Click(Sender: TObject);
begin
IF FileExists('PFAD') THEN
Memo1.Lines.SaveToFile('PFAD');

IF FileExists('PFAD') THEN
button1.visible := true;
end;

procedure Tconfig.Button2Click(Sender: TObject);
begin
IF FileExists('PFAD') THEN
Memo1.Lines.LoadFromFile('htdocs\include\config.php');

IF FileExists('PFAD') THEN
button1.visible := false;
end;

procedure Tconfig.FormCreate(Sender: TObject);
begin
IF FileExists('PFAD') THEN
Memo1.Lines.LoadFromFile('PFAD')

IF FileExists('PFAD') THEN
button1.visible := true;
end;

end.

mkinzler 17. Dez 2008 18:13

Re: Zugriffsverletzung
 
Was soll das den
Delphi-Quellcode:
IF FileExists('PFAD') THEN
?
Und nochmal Keine unvollständigen Pfadangaben!!!

milos 17. Dez 2008 18:18

Re: Zugriffsverletzung
 
Ich brauche so eine Pfad methode! Sie soll nur die datei öffnen die man für das braucht ;) und eigentlich ist es blablabla\bla\blabla.exe

mkinzler 17. Dez 2008 18:22

Re: Zugriffsverletzung
 
Wo liegen die Dateien, die du öffnen willst?
Wenn Pfad einen Variable ist, dann darfst du diese nicht in '' setzen.

milos 17. Dez 2008 18:24

Re: Zugriffsverletzung
 
Ich habe den Pfad sozusagenzensiert... In der unit hat es einen richtigen pfad

mkinzler 17. Dez 2008 18:26

Re: Zugriffsverletzung
 
Einen vollständigen?

milos 17. Dez 2008 18:31

Re: Zugriffsverletzung
 
Ja also nicht von C: sondern direkt vom ordner!

ryLIX 17. Dez 2008 18:38

Re: Zugriffsverletzung
 
Delphi-Quellcode:
procedure Tconfig.Button1Click(Sender: TObject);
begin
IF FileExists('PFAD') THEN
Memo1.Lines.SaveToFile('PFAD');

IF FileExists('PFAD') THEN
button1.visible := true;
end;
Wazu ist die zweite If Abfrage gut?
Wenn ich Button1 klicke muss dieser schon visible sein. O.o

Was passiert eigentlich wenn
Delphi-Quellcode:
FileExists(Pfad\zu\deiner\Datei)
False zurück liefert?

Zitat:

Zitat von milos
Ja also nicht von C: sondern direkt vom ordner!

Meinst du nun eine relative Pfadangabe?
Ich versteh die Aussage gerade nicht.

mkinzler 17. Dez 2008 18:39

Re: Zugriffsverletzung
 
Dann gibt den Pfad doch vollständig an:
Delphi-Quellcode:
Memo1.Lines.LoadFromFile(ExtractFilePath(ParamStr(0)+'htdocs\include\config.php');

Helmi 17. Dez 2008 18:42

Re: Zugriffsverletzung
 
Hallo,

wir haben jetzt schon einen 4-Seiten-Thread und stehen eigentlich noch am Anfang.

Wie wärs wenn du mal dein Projekt (damit mein ich den Quellcode) gezippt anhängst?

milos 17. Dez 2008 18:46

Re: Zugriffsverletzung
 
Liste der Anhänge anzeigen (Anzahl: 1)
OK weil ihr es seit!

mkinzler 17. Dez 2008 18:50

Re: Zugriffsverletzung
 
Warum nicht hier? Aber zuerst solltest du mal die Anregungen umsetzen

ryLIX 17. Dez 2008 18:50

Re: Zugriffsverletzung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von milos

Helmi meinte sicherlich die Attatchment Funktion des Forums mit anhängen...

@Alle andern
ich habs angehängt...

Helmi 17. Dez 2008 18:50

Re: Zugriffsverletzung
 
Zitat:

Zitat von milos

Häng es bitte hier als Anhang an deinen Beitrag an!
So ist es immer verfügbar und man braucht nicht dieses komische
rapidshare verwenden...

Zitat:

Zitat von ryLIX
Helmi meinte sicherlich die Attatchment Funktion des Forums mit anhängen...

Ja genau die meinte ich, danke ryLIX

milos 17. Dez 2008 18:57

Re: Zugriffsverletzung
 
Gemacht

Helmi 17. Dez 2008 19:00

Re: Zugriffsverletzung
 
Ich hab mir mal dein Programm angeschaut.
Der Fehler liegt erst mal hier:

Delphi-Quellcode:
if (not (updatetext.Lines.Strings[0] = '3.5')) then
updatenform.show;
(OnCreate der Form1)

Die Form "updatenform" existiert zu diesem Zeitpunkt noch nicht
aber du willst sie schon anzeigen. Dann kommts zu deinem
beschriebenen Fehler.
(Ich hatte den selben Fehler erhalten)

milos 17. Dez 2008 19:02

Re: Zugriffsverletzung
 
Und was soll ich machen?

ryLIX 17. Dez 2008 19:03

Re: Zugriffsverletzung
 
1. Bevor du Form.Show verwenden kannst muss Form.Create erfolgreich beendet sein.
Also den Teil aus
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
Nach
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
verlegen.

2. Ein Form welches nicht angezeigt wird kann nicht geschlossen werden.
Und somit ist Form.Close(); ohne Wirkung.
BTW hast du mal auf Fortsetzen geklickt wenn die Fehlermeldung kommt?
Denn die erzwingst du selber in try... except :roll:
Verwende anstatt Form.Close(); Application.Terminate;

[Edit]
Helmi war ein wenig schnell mit schreiben :thumb:

Helmi 17. Dez 2008 19:18

Re: Zugriffsverletzung
 
Zitat:

Zitat von ryLIX
Helmi war ein wenig schnell mit schreiben :thumb:

Aber nur ein bischen :-)

Mir ist noch was aufgefallen.
Diesen Part solltest du etwas umbauen, denn was ist, wenn die Datei nicht vorhanden ist?
(Fehler beim Downloaden, keine Schreibrechte auf c:\Windows\system32\)

Und ein paar If-Anweisungen könntest dir ersparen

Delphi-Quellcode:
   IF FileExists('C:\WINDOWS\system32\Update_sa.txt') THEN
   Updatetext.Lines.LoadFromFile('C:\WINDOWS\system32\Update_sa.txt');
if (not (updatetext.Lines.Strings[0] = '3.5')) then
updatenform.show;
if (not (updatetext.Lines.Strings[0] = '3.5')) then
MessageDlg('Drücken sie auf Updaten damit sie die neuste Version bekommen', mtError, [mbOK], 0);
if (updatetext.Lines.Strings[0] = '3.5') then
   MessageDlg('Sie haben schon die neuste Version!', mtError, [mbOK], 0)
abgeändert:
Delphi-Quellcode:
   
    If FileExists('C:\WINDOWS\system32\Update_sa.txt') then
      begin
        Updatetext.Lines.LoadFromFile('C:\WINDOWS\system32\Update_sa.txt');

        If (updatetext.Lines.Count > 0) and (updatetext.Lines[0] = '3.5') then
         MessageDlg('Sie haben schon die neuste Version!', mtError, [mbOK], 0)
        else
          begin
            updatenform.show;
            MessageDlg('Drücken sie auf Updaten damit sie die neuste Version bekommen', mtError, [mbOK], 0);
          end;
      end
    else
      MessageDlg('Datei: "Update_sa.txt" konnte nicht gefunden werden!', mtError, [mbOK], 0);
(Ich hab mir erlaubt eine neue Meldung aufzubauen)

[Edit]
DeddyHs Hinweis mit eingebaut

DeddyH 17. Dez 2008 19:21

Re: Zugriffsverletzung
 
Delphi-Quellcode:
If (updatetext.Lines.Count > 0) and (updatetext.Lines[0] = '3.5') then
Sicherer, kommt auch mit einer leeren Datei zurecht ;)

milos 17. Dez 2008 19:26

Re: Zugriffsverletzung
 
Jetzt startet der Debuger gar nicht mehr...

Helmi 17. Dez 2008 19:28

Re: Zugriffsverletzung
 
Zitat:

Zitat von milos
Jetzt startet der Debuger gar nicht mehr...

Was willst damit sagen?
Was hast gemacht?
Was geht?
Was geht nicht mehr?
Was hast schon probiert?

(manchmal muss man bei deinen Aussagen rätselraten)

ryLIX 17. Dez 2008 19:29

Re: Zugriffsverletzung
 
Der Hinweis da man die aktuellste version hat kann man sich meiner Meinung nach sparen.
Mich würde es als User nicht interessieren.

Mal was anderes:
Ich habe trotz der Codeverlagerung in die OnShow Methode immer noch die Exception :gruebel:
Und zwar beim Aufruf von Updatenform.Show;
Sollte eigentlich nicht sein oder liege ich da falsch?


Debugger? :wiejetzt:

milos 17. Dez 2008 19:32

Re: Zugriffsverletzung
 
Was willst damit sagen? = Ich drücke F9 - Nichts passiert
Was hast gemacht? = F9 gedrückt :D
Was geht? = Garnichts :(
Was geht nicht mehr? = Der Debuger startet nicht. Ich drücke F9 geht nicht...
Was hast schon probiert? = Schliessen - öffnen (Also delphi)

DeddyH 17. Dez 2008 19:34

Re: Zugriffsverletzung
 
War der grüne Pfeil aktiv?

milos 17. Dez 2008 19:36

Re: Zugriffsverletzung
 
Nachdem ich ihn gedrückt habe nicht! Aber sonst schon

Helmi 17. Dez 2008 19:37

Re: Zugriffsverletzung
 
Zitat:

Zitat von ryLIX
Ich habe trotz der Codeverlagerung in die OnShow Methode immer noch die Exception :gruebel:
Und zwar beim Aufruf von Updatenform.Show;
Sollte eigentlich nicht sein oder liege ich da falsch?

Ich hab das gleiche Problem.

Wenn man aber im Projekt die Reihenfolge der CreateForm-Aufrufe ändert, gehts.
D. h. die Form1 ganz nach hinten, also als letzter Aufruf.
Ist aber nicht so ganz das wahre.

ryLIX 17. Dez 2008 19:38

Re: Zugriffsverletzung
 
Zitat:

Zitat von milos
Was willst damit sagen? = Ich drücke F9 - Nichts passiert
Was hast gemacht? = F9 gedrückt :D
Was geht? = Garnichts :(
Was geht nicht mehr? = Der Debuger startet nicht. Ich drücke F9 geht nicht...
Was hast schon probiert? = Schliessen - öffnen (Also delphi)

Werden im Meldungsfenster Meldungen angezeigt?
Startet der Compiler?


Zu dem was ich gerade angesprochen habe:
Ich habe nun mal den Konstruktor von Form1 ans Ende verlegt dann geht es ohne Fehler...

Sollte nicht erst ab Application.Run; die OnShow Methode laufen?

//Edit
Gnaaaaaaz wieso bekomm ich keinen roten Kasten?
@ Helmi
hatte auch eine andere Lösung gesucht ^^

Helmi 17. Dez 2008 19:43

Re: Zugriffsverletzung
 
Zitat:

Zitat von ryLIX
//Edit
Gnaaaaaaz wieso bekomm ich keinen roten Kasten?
@ Helmi
hatte auch eine andere Lösung gesucht ^^

[OT]
Trotzdem war ich schneller *zunge rausstreck* :-)
[/OT]

milos 17. Dez 2008 19:46

Re: Zugriffsverletzung
 
OK nun startet der Debugger aber der Blaue Fehler kommt wieder! :(

DeddyH 17. Dez 2008 19:52

Re: Zugriffsverletzung
 
Was ist ein blauer Fehler?

milos 17. Dez 2008 19:52

Re: Zugriffsverletzung
 
Wie beim Ersten bild...

Helmi 17. Dez 2008 19:53

Re: Zugriffsverletzung
 
Zitat:

Zitat von milos
OK nun startet der Debugger aber der Blaue Fehler kommt wieder! :(

Liest du eigentlich die Beiträge mit?
ryLIK und ich hatten/haben ja noch das gleiche Problem

milos 17. Dez 2008 19:55

Re: Zugriffsverletzung
 
Ja lese ich! Aber es kommt immer noch...

ryLIX 17. Dez 2008 19:56

Re: Zugriffsverletzung
 
Oben wurde schon ein Workarround gepostet.
Im Projektmanager rechts auf Project1.exe klicken und dann auf Quelltext anzeigen klicken.

Und dort Application.CreateForm(TForm1, Form1); zwischen Application.CreateForm(TUpdatenform, Updatenform); und Application.Run; verschieben.

//rote Kiste:
@Helmi
Wieso hab ich gerade das gleiche gedacht? :wall:

Helmi 17. Dez 2008 19:57

Re: Zugriffsverletzung
 
Zitat:

Zitat von ryLIX
@Helmi
Wieso hab ich gerade das gleiche gedacht? :wall:

Sind wir seelenverwandt? :-)

milos 17. Dez 2008 19:58

Re: Zugriffsverletzung
 
Das ist nicht mehr das Problem das der debugger nicht mehr startet ...


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

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