![]() |
Re: Zugriffsverletzung
Zitat:
|
Re: Zugriffsverletzung
Nein! Das Problem ist mit TConfig... Kann man ein Forumular löschen?
|
Re: Zugriffsverletzung
Zitat:
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. |
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. |
Re: Zugriffsverletzung
Was soll das den
Delphi-Quellcode:
?
IF FileExists('PFAD') THEN
Und nochmal Keine unvollständigen Pfadangaben!!! |
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
|
Re: Zugriffsverletzung
Wo liegen die Dateien, die du öffnen willst?
Wenn Pfad einen Variable ist, dann darfst du diese nicht in '' setzen. |
Re: Zugriffsverletzung
Ich habe den Pfad sozusagenzensiert... In der unit hat es einen richtigen pfad
|
Re: Zugriffsverletzung
Einen vollständigen?
|
Re: Zugriffsverletzung
Ja also nicht von C: sondern direkt vom ordner!
|
Re: Zugriffsverletzung
Delphi-Quellcode:
Wazu ist die zweite If Abfrage gut?
procedure Tconfig.Button1Click(Sender: TObject);
begin IF FileExists('PFAD') THEN Memo1.Lines.SaveToFile('PFAD'); IF FileExists('PFAD') THEN button1.visible := true; end; Wenn ich Button1 klicke muss dieser schon visible sein. O.o Was passiert eigentlich wenn
Delphi-Quellcode:
False zurück liefert?
FileExists(Pfad\zu\deiner\Datei)
Zitat:
Ich versteh die Aussage gerade nicht. |
Re: Zugriffsverletzung
Dann gibt den Pfad doch vollständig an:
Delphi-Quellcode:
Memo1.Lines.LoadFromFile(ExtractFilePath(ParamStr(0)+'htdocs\include\config.php');
|
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? |
Re: Zugriffsverletzung
Liste der Anhänge anzeigen (Anzahl: 1)
OK weil ihr es seit!
|
Re: Zugriffsverletzung
Warum nicht hier? Aber zuerst solltest du mal die Anregungen umsetzen
|
Re: Zugriffsverletzung
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
@Alle andern ich habs angehängt... |
Re: Zugriffsverletzung
Zitat:
So ist es immer verfügbar und man braucht nicht dieses komische rapidshare verwenden... Zitat:
|
Re: Zugriffsverletzung
Gemacht
|
Re: Zugriffsverletzung
Ich hab mir mal dein Programm angeschaut.
Der Fehler liegt erst mal hier:
Delphi-Quellcode:
(OnCreate der Form1)
if (not (updatetext.Lines.Strings[0] = '3.5')) then
updatenform.show; 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) |
Re: Zugriffsverletzung
Und was soll ich machen?
|
Re: Zugriffsverletzung
1. Bevor du Form.Show verwenden kannst muss Form.Create erfolgreich beendet sein.
Also den Teil aus
Delphi-Quellcode:
Nach
procedure TForm1.FormCreate(Sender: TObject);
Delphi-Quellcode:
verlegen.
procedure TForm1.FormShow(Sender: TObject);
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: |
Re: Zugriffsverletzung
Zitat:
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:
abgeändert:
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)
Delphi-Quellcode:
(Ich hab mir erlaubt eine neue Meldung aufzubauen)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); [Edit] DeddyHs Hinweis mit eingebaut |
Re: Zugriffsverletzung
Delphi-Quellcode:
Sicherer, kommt auch mit einer leeren Datei zurecht ;)
If (updatetext.Lines.Count > 0) and (updatetext.Lines[0] = '3.5') then
|
Re: Zugriffsverletzung
Jetzt startet der Debuger gar nicht mehr...
|
Re: Zugriffsverletzung
Zitat:
Was hast gemacht? Was geht? Was geht nicht mehr? Was hast schon probiert? (manchmal muss man bei deinen Aussagen rätselraten) |
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: |
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) |
Re: Zugriffsverletzung
War der grüne Pfeil aktiv?
|
Re: Zugriffsverletzung
Nachdem ich ihn gedrückt habe nicht! Aber sonst schon
|
Re: Zugriffsverletzung
Zitat:
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. |
Re: Zugriffsverletzung
Zitat:
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 ^^ |
Re: Zugriffsverletzung
Zitat:
Trotzdem war ich schneller *zunge rausstreck* :-) [/OT] |
Re: Zugriffsverletzung
OK nun startet der Debugger aber der Blaue Fehler kommt wieder! :(
|
Re: Zugriffsverletzung
Was ist ein blauer Fehler?
|
Re: Zugriffsverletzung
Wie beim Ersten bild...
|
Re: Zugriffsverletzung
Zitat:
ryLIK und ich hatten/haben ja noch das gleiche Problem |
Re: Zugriffsverletzung
Ja lese ich! Aber es kommt immer noch...
|
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: |
Re: Zugriffsverletzung
Zitat:
|
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. |
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