AGB  ·  Datenschutz  ·  Impressum  







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

selectdirectory zugriffsverletzung

Ein Thema von Danyel · begonnen am 23. Jul 2010 · letzter Beitrag vom 24. Jul 2010
Antwort Antwort
Danyel

Registriert seit: 7. Okt 2009
Ort: Lübeck
15 Beiträge
 
Delphi 5 Standard
 
#1

AW: selectdirectory zugriffsverletzung

  Alt 23. Jul 2010, 23:57
Die Variable ist global deklariert, da sie nicht nur dort benutzt wird.
Ist demnach also doch wohl richtig denke ich
Auf true Abfragen werden geändert, danke.

Das mit dem FormCreate kann natürlich sein, werde es schnellstmöglich testen, an anderer Stelle aufzurufen.

MfG Danyel
Auch wenn am Ende dein Programm nicht läuft,
so bist mit dem Weg gewachsen und nichts war
umsonst!
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: selectdirectory zugriffsverletzung

  Alt 24. Jul 2010, 00:29
Die Variable ist global deklariert, da sie nicht nur dort benutzt wird.
Ist demnach also doch wohl richtig denke ich
Nein, wenn sie zum Formular gehört, gehört sie in den Private-Teil.

Hast du dir mein Beispiel überhaupt mal angesehen?
  Mit Zitat antworten Zitat
Danyel

Registriert seit: 7. Okt 2009
Ort: Lübeck
15 Beiträge
 
Delphi 5 Standard
 
#3

AW: selectdirectory zugriffsverletzung

  Alt 24. Jul 2010, 00:43
Ja, habe ich.
Habe die beiden Variablen vertauscht, entschuldige. (Sind beide Global)
Das höre ich heute zum ersten mal, das die dann in den Private Bereich kommen. (in der Schule falsch beigebracht)

Werde den Aufruf, die Abfrage und die Variablendeklaration schnellstmöglich anpassen.

Habe ich das richtig verstanden, dass wenn meine Variable nur für die Form, zB Form1, gültig sein soll, diese im private Bereich deklariert wird? Wozu dient oben dann die Anfänglich var Aufführung? Würde meine Variable dort auf allen Forms, falls mehrere vorhanden, deklariert sein? Ist mir noch nie bewusst aufgefallen, bzw mein Lehrer hat auch noch einiges zu lernen.
Vielen Dank, du hast meinen Horizont erweitert, dh, wenn ichs richtig verstanden habe.
Immer wieder spannend....

MfG Danyel
Auch wenn am Ende dein Programm nicht läuft,
so bist mit dem Weg gewachsen und nichts war
umsonst!
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: selectdirectory zugriffsverletzung

  Alt 24. Jul 2010, 13:09
Also man kann im interface- und im implementation-Teil über das Schlüsselwort var Variablen deklarieren.
Die, die im Interface-Teil deklariert sind sind projektglobal sichtbar und da man immer so lokal wie möglich Variablen deklariert, ist das die schlecheste Stelle überhaupt. Nur weil Delphi das für seine Formularvariablen tut, muss man dies nicht nachmachen. Mal ganz davon abgesehen, dass man nicht alle Formulare beim Programmstart erzeugen lässt und wenn man genau dies tut, dann löscht man auch diese globalen Formularvariablen und hat nur noch die eine, die das Hauptformular beinhaltet.
Im Implementation-Teil werden Variablen deklariert, die unitglobal sein sollen. Besitzt eine Unit allerdings ein Formular und man möchte in diesem Objekt eine globale Variable einführen, dann deklariert man diese im Private-Teil. Der Unterschied ist folgender: Hat man mehrere Instanzen des selben Objektes (hier Formular) dann hat (wenn man die Variable im Private-Teil deklariert) jedes Objekt seine eigene globale Variable. Deklariert man die Variable degegen im Implementation-Teil, dann haben und benutzen alle Objekte dieselbe globale Variable. Meist hat man ein Formular nur einmal, deshalb fällt diese Problematik nicht weiter auf, trotzdem sollte man gleich "ordentlich" programmieren und wissen was man da eigentlich tut.
  Mit Zitat antworten Zitat
Danyel

Registriert seit: 7. Okt 2009
Ort: Lübeck
15 Beiträge
 
Delphi 5 Standard
 
#5

AW: selectdirectory zugriffsverletzung

  Alt 24. Jul 2010, 13:40
Danke! Das werde ich mir künftig zu herzen nehmen.
Teste jetzt gleich die Änderungen, melde mich dann nochmal, ob es geklappt hat.

EDIT

Hat nun geklappt, im FormCreate kam er damit wohl nicht klar. Danke an alle.
Delphi-Quellcode:
private
    { Private-Deklarationen }
    var
    ini: TIniFile;
    firstrun:boolean;
    bf2modtools:string;

procedure TForm1.FormActivate(Sender: TObject);
begin
      if firstrun then
      begin
           if SelectDirectory('Select a directory', 'C:\', bf2modtools) then ShowMessage(bf2modtools);
      end;
end;

Kann geschlossen werden
Auch wenn am Ende dein Programm nicht läuft,
so bist mit dem Weg gewachsen und nichts war
umsonst!

Geändert von Danyel (24. Jul 2010 um 13:48 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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:40 Uhr.
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