AGB  ·  Datenschutz  ·  Impressum  







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

INI Fragen wie immer

Ein Thema von SaFu · begonnen am 20. Sep 2007 · letzter Beitrag vom 24. Sep 2007
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#21

Re: INI Fragen wie immer

  Alt 20. Sep 2007, 21:04
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.
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#22

Re: INI Fragen wie immer

  Alt 20. Sep 2007, 21:29
Du hast die lösung doch bereits selbst gegeben?
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#23

Re: INI Fragen wie immer

  Alt 20. Sep 2007, 21:31
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:
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;
und wo ist hier der fehler??
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;
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#24

Re: INI Fragen wie immer

  Alt 21. Sep 2007, 06:51
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:
// ...
    Form4.Timer2.Enabled := ReadBool(Einstellung, ja_nein, Form4.Timer2.Enabled);
// ...
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.

Delphi-Quellcode:
procedure TForm6.SpinEdit1Change(Sender: TObject);
begin
  //...
    SpinEdit1.MinValue:= 1;
    SpinEdit1.MaxValue:= 10;
  // ...
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#25

Re: INI Fragen wie immer

  Alt 21. Sep 2007, 07:20
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
JSRunningText1.Color:= StringToColor(ReadString(Laufschrifttext,farbe,JSRunningText1.Color); mach ich irgfen ein Fehler der wert wurde vorher mit colorToString in die ini geschrieben das funtzt auch
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#26

Re: INI Fragen wie immer

  Alt 21. Sep 2007, 07:33
Du kannst Farben einfach als integer speichern, probier das mal!
Richard Mahr
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#27

Re: INI Fragen wie immer

  Alt 21. Sep 2007, 07:36
mit dem colorToInt
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#28

Re: INI Fragen wie immer

  Alt 21. Sep 2007, 07:57
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
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#29

Re: INI Fragen wie immer

  Alt 21. Sep 2007, 08:14
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.
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#30

Re: INI Fragen wie immer

  Alt 21. Sep 2007, 13:25
Herrgott zeig doch mal ein wenig eigeninitiative
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.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 18:07 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