![]() |
Re: INI Fragen wie immer
Es wäre sehr net von euch wenn ihr mir vielleicht doch bei dem problem helft versuche es jetzt schon seit stunden aber ich komme leider nicht darauf. :cry:
|
Re: INI Fragen wie immer
Du hast die lösung doch bereits selbst gegeben?
|
Re: INI Fragen wie immer
dann bin ich total bescheuert
ich bekomme einen Fehler ich habe jetzt alle einstellungen von 6 Formblätter in die ini gespeichert jetzt möchte ich aber von der ersten form die werte für die anderen laden bei diesem post bekomme ich einen fehler "zugriffs verletzung"
Delphi-Quellcode:
und wo ist hier der fehler??
procedure TForm1.einstellungenf4;
Var durchlauf: TFileName; begin durchlauf := (ExtractFilePath(ParamStr(0)) + 'EinstellungBilder.ini'); with TMemIniFile.Create(durchlauf) do try Form4.Timer2.Enabled:= ReadBool(Einstellung, ja_nein, Form4.Timer2.Enabled); // hier bekomme ich den fehler UpdateFile; finally Free; end; end;
Delphi-Quellcode:
procedure TForm6.SpinEdit1Change(Sender: TObject);
begin Laufschrift := ExtractFilePath(ParamStr(0)) + 'settings.ini'; begin SpinEdit1.MinValue:= 1; SpinEdit1.MaxValue:= 10; JsRunningText1.Steps:= SpinEdit1.Value; // Stufe einstellen Form3.JsRunningText1.Steps:= SpinEdit1.Value; with TMemIniFile.Create(Laufschrift) do try WriteInteger(laufschrifttext,stufe,SpinEdit1.Value); UpdateFile; finally Free; end; end; end; |
Re: INI Fragen wie immer
Hallo Sascha,
UpdateFile() musst du nur aufrufen, wenn du Änderungen an TMemIniFile gemacht hast, weil diese Änderungen sonst nicht auf der Platte gespeichert werden. Das Lesen und Schreiben von Einstellungen einer Form solltest du bei den Ereignissen OnCreate() und OnDestroy() ansiedeln. Jede Form sollte ihre Einstellungen selbst verwalten. Zugriffe der Forms untereinander solltest du nochmal überdenken, das geht oft auch besser. Du musst auch überlegen welche Eigenschaften von Komponenten einen Neustart deines Programms überdauern müssen. Der Enabled-Status eines Timers gehört für mich nicht unbedingt dazu. Die Zugriffsverletzung bei der folgenden Zuweisung kann ich nicht erkennen. Die Verwendung der existierenden Einstellung als Default-Wert ist ungewöhnlich, aber nicht strafbar. Vielleicht solltest du mal prüfen, auf was er da mit "Einstellung" und "ja_nein" zugreift.
Delphi-Quellcode:
Das Setzen von MinValue und MaxValue mit Konstanten machst du besser im Object Inspector. Und speichern musst du nicht bei jeder Änderung am SpinEdit, es reicht wenn du das beim Zerstören der Form machst.
// ...
Form4.Timer2.Enabled := ReadBool(Einstellung, ja_nein, Form4.Timer2.Enabled); // ...
Delphi-Quellcode:
Freundliche Grüße
procedure TForm6.SpinEdit1Change(Sender: TObject);
begin //... SpinEdit1.MinValue:= 1; SpinEdit1.MaxValue:= 10; // ... end; |
Re: INI Fragen wie immer
danke marabu habe deine einzelnen Punkte berücksichtigt
aber wie kann ich es denn realisieren das mien timer läuft wenn das Programm gestartet wird. zudem habe ich gestern ihr auch noch einen Fehler bekommen ich habe auch schon einige dinge versucht die hier im Forum stehen aber nichts hat geklappt
Delphi-Quellcode:
mach ich irgfen ein Fehler der wert wurde vorher mit colorToString in die ini geschrieben das funtzt auch
JSRunningText1.Color:= StringToColor(ReadString(Laufschrifttext,farbe,JSRunningText1.Color);
|
Re: INI Fragen wie immer
Du kannst Farben einfach als integer speichern, probier das mal!
|
Re: INI Fragen wie immer
mit dem colorToInt
|
Re: INI Fragen wie immer
Hallo,
wenn die Methode einstellungenf4 im Handler für das OnCreate-Ereignis von Form1 aufgerufen wird, kann das zu einer Zugriffsverletzung führen, da zu diesem Zeitpunkt die übrigen Formulare möglicherweise noch nicht existieren. Die zugehörigen Formularvariablen (in diesem Fall Form4) haben dann den Wert NIL. Gruß Hawkeye |
Re: INI Fragen wie immer
Also ic Poste mal meine ganze Form
ich bekomme immer dan einen Fehler wenn etwas auf eine andere Form zugreifen will(von Form3 auf Form6) Bei allen auskommentierten sachen habe ich einen fehler
Delphi-Quellcode:
unit Unit6; // Laufschrift bearbeiten
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, MPlayer, JsRunningText, Spin, ColorGrd, IdBaseComponent,InIFiles, IdComponent, IdTCPConnection, IdTCPClient, IdTime; type TForm6 = class(TForm) Button2: TButton; Button3: TButton; Button4: TButton; Label3: TLabel; Label4: TLabel; Panel1: TPanel; Panel2: TPanel; Panel4: TPanel; SpeedButton1: TSpeedButton; JsRunningText1: TJsRunningText; Memo1: TMemo; GroupBox1: TGroupBox; Label1: TLabel; Label7: TLabel; ComboBox1: TComboBox; SpinEdit1: TSpinEdit; CheckBox1: TCheckBox; FontDialog1: TFontDialog; Button1: TButton; ColorDialog1: TColorDialog; Button5: TButton; IdTime1: TIdTime; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure Memo1Change(Sender: TObject); procedure SpinEdit1Change(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure Button5Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private lauftext :TFileName; Laufschrift: TFileName; { Private-Deklarationen } public const laufschrifttext = 'Laufschrift'; farbe = 'Farbehintergrund'; stufe = 'Stufe'; stufelaufschrift = 'stufelaufschrift'; Richtung = 'Richtung'; ein_aus = 'Ein/Aus';{ Public-Deklarationen } end; var Form6: TForm6; implementation uses Unit2, Unit1, Unit11, Unit3; {$R *.dfm} procedure TForm6.FormCreate(Sender: TObject); var i :integer; begin for i:= 0 to ComponentCount-1 do //XP Anzeige if Components[i] is TPanel then (Components[i] as TPanel).ParentBackground:= False; Laufschrift := (ExtractFilePath(ParamStr(0)) + 'settings.ini'); with TMemIniFile.Create(Laufschrift) do try JsRunningText1.Run:= ReadBool(laufschrifttext, ein_aus, JsRunningText1.Run); SpinEdit1.Value:= ReadInteger(Laufschrifttext ,stufe, SpinEdit1.Value); ComboBox1.ItemIndex:= ReadInteger(Laufschrifttext ,Richtung, ComboBox1.ItemIndex); if ComboBox1.ItemIndex = 1 then begin Combobox1.Text:= 'Rechts'; end else begin Combobox1.Text:= 'Links'; end; // JSRunningText1.Color:= StringToColor(ReadString(Laufschrifttext,farbe,JSRunningText1.Color); finally Free; end; end; //==============Speichern der ini bei schließen der Form======================= procedure TForm6.FormDestroy(Sender: TObject); begin Laufschrift := ExtractFilePath(ParamStr(0)) + 'settings.ini'; begin with TMemIniFile.Create(Laufschrift) do try WriteInteger(laufschrifttext,stufe,SpinEdit1.Value); UpdateFile; finally Free; end; end; end; procedure TForm6.FormShow(Sender: TObject); begin Form6.Top:= 0; Form6.Left:= 0; lauftext:= ExtractFilePath(ParamStr(0)) +'Einstellungen\'+ 'Laufschrifttext.txt'; Memo1.Lines.LoadFromFile(lauftext); Form6.DoubleBuffered:= True; JsRunningText1.Font.Size:= 12; JsRunningText1.AlwaysCenterText:= True;// text miitig setzen ComboBox1.ItemIndex:=0; Memo1.SetFocus; end; //========= Button Text bearbeiten=============================================== procedure TForm6.Button1Click(Sender: TObject); begin if Memo1.Text = '' then begin MessageDlgPos('Bitte zuerst Text eingeben!',mtInformation,[mbOk],0,260,200); Memo1.SetFocus; end else begin If FontDialog1.Execute then begin JsRunningtext1.Font:= Fontdialog1.Font; JsRunningText1.AlwaysCenterText:= True; Form3.JsRunningtext1.Font:= Fontdialog1.Font; Form3.JsRunningText1.AlwaysCenterText:= True; end; end; end; //=========Laufschrift einschalten============================================== procedure TForm6.Button2Click(Sender: TObject); begin Laufschrift := ExtractFilePath(ParamStr(0)) + 'settings.ini'; with TMemIniFile.Create(Laufschrift) do try WriteBool(laufschrifttext,ein_aus,True); UpdateFile; finally Free; end; if JSRunningText1.Run = True then //Wenn Timer1 ein begin MessageDlgPos('Laufschrift ist eingeschaltet !',mtInformation,[mbOk],0,260,200); end else if Memo1.Text = '' then //Wenn Edit1 leer begin MessageDlgPos('Bitte zuerst Text eingeben!',mtInformation,[mbOk],0,260,200); Memo1.SetFocus; //Setze Focus auf Edit1 end else begin lauftext:= ExtractFilePath(ParamStr(0)) +'Einstellungen\'+ 'Laufschrifttext.txt'; Memo1.Lines.SaveToFile(lauftext); //in Datei speichern alleLehrer.txt JsRunningText1.Run:= True; JsRunningText1.Font.Size:= 12; JsRunningText1.AlwaysCenterText:= True; JsRunningText1.AlwaysCenterText:= True; Form3.JsRunningText1.Run:= True; Form3.JsRunningText1.Font.Size:= 18; Form3.JsRunningText1.Font.Style:= [fsBold]; Form3.JsRunningText1.AlwaysCenterText:= True; Form3.Panel1.Visible:= True; end; end; //=============Laufschrift ausschalten========================================== procedure TForm6.Button3Click(Sender: TObject); begin Laufschrift := ExtractFilePath(ParamStr(0)) + 'settings.ini'; with TMemIniFile.Create(Laufschrift) do try WriteBool(laufschrifttext,ein_aus,False); UpdateFile; finally Free; end; if JSRunningtext1.Run = False then begin MessageDlgPos('Laufschrift ist bereits ausgeschaltet!',mtInformation,[mbOk],0,260,200); end else lauftext:= ExtractFilePath(ParamStr(0)) +'Einstellungen\'+ 'Laufschrifttext.txt'; Memo1.Lines.SaveToFile(lauftext); //in Datei speichern alleLehrer.txt JsRunningText1.Run:= False; Form3.JsRunningText1.Run:= False; Label3.Visible:= False; Label4.Visible:= False; JSRunningText1.Color:= ClWhite; Form3.Panel1.Visible:= False; end; //=========Bedienungsanleitung aufrufen========================================= procedure TForm6.SpeedButton1Click(Sender: TObject); begin Form11.Show; Form11.Webbrowser1.Navigate('\Programme\ElInta\ElInta\Bedienungsanleitung.pdf'); end; //===========Schließen========================================================== procedure TForm6.Button4Click(Sender: TObject); begin Form6.Close; Form2.Visible:= True; end; //========Text für die Laufschrift eingeben===================================== procedure TForm6.Memo1Change(Sender: TObject); begin JsRunningText1.Text:= Memo1.Lines; Form3.JsRunningText1.Text:= Memo1.Lines; end; //========Geschwindigkeit der Laufschrift ändern================================ procedure TForm6.SpinEdit1Change(Sender: TObject); begin Form3.SpinEdit1.Value:= SpinEdit1.Value; // JsRunningText1.Steps:= SpinEdit1.Value; // Hier bekomme ich einen zugriffsfehler end; //=====Richtung für die Laufschrift ändern====================================== procedure TForm6.ComboBox1Change(Sender: TObject); begin Laufschrift := ExtractFilePath(ParamStr(0)) + 'settings.ini'; begin JsRunningText1.Direction:= TJsRunningTextDirection(ComboBox1.ItemIndex); with TMemIniFile.Create(Laufschrift) do try WriteInteger(laufschrifttext ,Richtung ,ComboBox1.ItemIndex); UpdateFile; finally Free; end; Form3.JsRunningText1.Direction:= TJsRunningTextDirection(ComboBox1.ItemIndex); end; end; //===========Schaten für die Laufschrift======================================== procedure TForm6.CheckBox1Click(Sender: TObject); begin JsRunningText1.Shadow.Visible:=CheckBox1.Checked; Form3.JsRunningText1.Shadow.Visible:=CheckBox1.Checked; end; //===========farben ändern====================================================== procedure TForm6.Button5Click(Sender: TObject); begin Laufschrift := ExtractFilePath(ParamStr(0)) + 'settings.ini'; begin with TMemIniFile.Create(Laufschrift) do try if Colordialog1.Execute then begin JSRunningText1.Color:= ColorDialog1.Color; // WriteInteger(laufschrifttext,farbe,ColorToInt(ColorDialog1.Color)); Form3.JSRunningText1.Color:= ColorDialog1.Color; UpdateFile; end; finally Free; end; end; end; end. |
Re: INI Fragen wie immer
Herrgott zeig doch mal ein wenig eigeninitiative :roll:
Es gibt hier eine Forensucher, es gibt eine Internetsuchmaschine mit den Augen und auch eine Menge Fachliteratur. Du musst hier nicht wegen jedem Mist gleich eine neue Frage eröffnen. Außerdem solltest du dir die Vorschläge der Anderen mal zu Herzen nehmen. Jemand sagte bereits dass es vermutlich daran liegt, dass die andere Form noch nicht erstellt wurde. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 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