Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi INI Fragen wie immer (https://www.delphipraxis.net/99979-ini-fragen-wie-immer.html)

SaFu 20. Sep 2007 13:01


INI Fragen wie immer
 
Hi

Hab mal ne Frage wegen einer INI datei beschäftige mich gerade damit

Das man in einer ini datei einstellungen speichern kann weis ich jetzt.

aber wie wird immer der neue wert gespeichert

Delphi-Quellcode:
rocedure TForm1.Button3click(Sender: TObject);
var MyIniFile : TInIfile;
begin
MyIniFile := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'MyIniFile3.ini');
//MyIniFile := Tinifile.Create( 'MyIniFile.ini' );


MyIniFile.WriteString('Benutzername','edit1.text','//Was muss hier rein');
MyIniFile.WriteString('Passwort','edit2.text','//Was muss hier rein'); // muss ja variabel sein oder?????


MyIniFile.Free;
end;

procedure TForm1.Button4Click(Sender: TObject);
var MyIniFile : TIniFile;

begin
MyIniFile := TInIFile.Create(ExtractFilePath(ParamStr(0)) + 'MyIniFile3.ini');
Edit1.Text := MyIniFile.ReadString('Benutzername','edit1.text','0');
Form1.Caption:= MyIniFile.ReadString('Passwort','edit2.text','0');

end;
Gruss sascha

DeddyH 20. Sep 2007 13:03

Re: INI Fragen wie immer
 
Delphi-Quellcode:
var MyIniFile : TInIfile;
begin
MyIniFile := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'MyIniFile3.ini');
//MyIniFile := Tinifile.Create( 'MyIniFile.ini' );


MyIniFile.WriteString('Benutzername','edit1.text',Neues_Stringliteral);
MyIniFile.WriteString('Passwort','edit2.text',Neues_Stringliteral); // muss ja variabel sein oder?????


MyIniFile.Free;
end;

SaFu 20. Sep 2007 13:05

Re: INI Fragen wie immer
 
Was meinst du damit "Neues_Stringliteral"

wenn ich eine Feste zeichenkette eingebe wird sie gespeichert aber wie mache ich das variabel das immer wenn ich was neues in <Edit1 eingebe das das gespeichert wird

DeddyH 20. Sep 2007 13:07

Re: INI Fragen wie immer
 
Delphi-Quellcode:
MyIniFile.WriteString('Benutzername','edit1.text',edit1.text);
Wo ist das Problem?

marabu 20. Sep 2007 13:09

Re: INI Fragen wie immer
 
Hallo Sascha,

mein Vorschlag:

Delphi-Quellcode:
const
  LOGIN_SECTION = 'LOGIN';
  USER_KEY = 'Benutzer';
  PSWD_KEY = 'Password';

procedure TForm1.Button3click(Sender: TObject);
var
  fn: TFileName;
begin
  fn := ExtractFilePath(ParamStr(0)) + 'MyIniFile3.ini';
  with TMemIniFile.Create(fn) do
  try
    WriteString(LOGIN_SECTION, USER_KEY, UserEdit.Text);
    WriteString(LOGIN_SECTION, PSWD_KEY, PswdEdit.Text);
    UpdateFile;
  finally
    Free;
  end;
end;
Freundliche Grüße

SaFu 20. Sep 2007 13:14

Re: INI Fragen wie immer
 
Das heist das wird in der registry gespeichert oder

und beim laden setze ich nur ein read davor ??

kann man auch speichern das man ein timer auf True gesetzt hat oder welche Farbe man im TColer ausgewählt hat??

Tormentor32 20. Sep 2007 13:17

Re: INI Fragen wie immer
 
Wenn du mal
Delphi-Quellcode:
MyIniFile.
eingibst dann öffnent sich so ein Fenster mit Scrollbalken und da steht drin was du alles mit deiner Ini Datei machen kannst ;-)

Reinhardtinho 20. Sep 2007 13:18

Re: INI Fragen wie immer
 
Bei Ini-Dateien wird nichts in der Registry gespeichert.

SaFu 20. Sep 2007 13:19

Re: INI Fragen wie immer
 
Japp habs gerade gesehen das von marabu ist genau das gleiche nur in Grünn und kürzer :nerd:

SaFu 20. Sep 2007 13:25

Re: INI Fragen wie immer
 
Das laden geht aber nicht so oder

Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var
  Anmeldeini: TFileName;
begin
  Anmeldeini := ExtractFilePath(ParamStr(0)) + 'MyIniFile3.ini';
  with TMemIniFile.Create(Anmeldeini) do
  try
    ReadString(LOGIN_SECTION, USER_KEY, Edit1.text);
    ReadString(LOGIN_SECTION, PSWD_KEY, Edit2.Text);
    UpdateFile;
  finally
    Free;
  end;
end;

Tormentor32 20. Sep 2007 13:27

Re: INI Fragen wie immer
 
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var
  Anmeldeini: TFileName;
begin
  Anmeldeini := ExtractFilePath(ParamStr(0)) + 'MyIniFile3.ini';
  with TMemIniFile.Create(Anmeldeini) do
  try
    Edit1.text := ReadString(LOGIN_SECTION, USER_KEY, 'Standard');
    Edit2.Text := ReadString(LOGIN_SECTION, PSWD_KEY, 'Standard');
    UpdateFile;
  finally
    Free;
  end;
end;
Edit: Tag repariert

SaFu 20. Sep 2007 13:33

Re: INI Fragen wie immer
 
Was soll den dieses standard bedeuten???

DeddyH 20. Sep 2007 13:34

Re: INI Fragen wie immer
 
Das ist ein Vorgabewert, wenn kein anderer ermittelt werden konnte (weil es z.B. die Ini noch gar nicht gab).

SaFu 20. Sep 2007 13:35

Re: INI Fragen wie immer
 
Und was könnte da z.b im welchem fall noch stehen

sorry wegen den dummen fragen aber wie gesagt arbeite mich gerade in das thema rein

Tormentor32 20. Sep 2007 13:36

Re: INI Fragen wie immer
 
Es doch wirklich nicht so schwer mal in die Hilfe zu gucken oder?
Zitat:

Zitat von Delphihilfe
Klasse
TIniFile

Syntax


Delphi-Quellcode:
 function ReadString(const Section: string; const Ident: string; const Default: string): string; override;

Beschreibung
ReadString liest einen String-Wert aus einer INI-Datei. Der String Section bezeichnet den Abschnitt, der den zum Wert gehörigen Schlüssel enthält. Der String Ident ist der Name des Schlüssels mit dem Wert. Default ist der Standardwert, der in den folgenden Situationen zurückgeliefert wird:

Der Abschnitt ist nicht vorhanden.

Der Schlüssel existiert nicht.

Dem Schlüssel ist kein Datenwert zugeordnet.


DeddyH 20. Sep 2007 13:37

Re: INI Fragen wie immer
 
Du gibst da einen Initialwert ein, der Dir selbst sinnvoll erscheint.

SaFu 20. Sep 2007 14:21

Re: INI Fragen wie immer
 
hab doch nochmal ne Frage

ich starte ein timer und der wert wird in der ini gepeichert und zwar so

Delphi-Quellcode:
//============Durschlauf starten================================================
procedure TForm4.Button2Click(Sender: TObject);
var
  durchlauf: TFileName;
begin
  durchlauf := ExtractFilePath(ParamStr(0)) + 'EinstellungBilder.ini';
  with TMemIniFile.Create(durchlauf) do
  try
    WriteBool(Einstellung,ja,True);

    UpdateFile;
  finally
    Free;
  end;

  Timer2.Enabled:= True;
  index:= 0; //Index auf "0" setzen
end;
wie wird jetzt aber der letzte eingegebe wert wieder geladen oder mach ich da was falsch

Laden wolte ich unter form show

Delphi-Quellcode:
procedure TForm4.FormShow(Sender: TObject);
var i :integer;
      durchlauf: TFileName;
begin
  durchlauf := ExtractFilePath(ParamStr(0)) + 'MyIniFile3.ini';
  with TMemIniFile.Create(durchlauf) do
  try
    Timer2.Enabled:= (Einstellung,): Boolean // hier weis ich jetzt nicht mehr
   
    UpdateFile;
  finally
     Free;
  end;
end;

SaFu 20. Sep 2007 14:36

Re: INI Fragen wie immer
 
ok hab es jetzt weiter geschaft

Delphi-Quellcode:
procedure TForm4.FormShow(Sender: TObject);
var i :integer;
      durchlauf: TFileName;
begin
  durchlauf := (ExtractFilePath(ParamStr(0)) + 'EinstellungBilder.ini');
  with TMemIniFile.Create(durchlauf) do
  try
    Timer2.Enabled:= ReadBool(Einstellung, ja_nein,);aber was muss hir rein das es variabel ist also True oder False
    UpdateFile;
  finally
    Free;
  end;

SaFu 20. Sep 2007 14:49

Re: INI Fragen wie immer
 
ok jetzt weis ich warum mir keiner helfen wolte hab es jetzt trotzdem danke

aber die letzte Frage danach nerv ich nicht mehr

Wie mache ich das von einer anderen Form aus z.b das ich den timer von der Form4 uber Form1 starte
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);
    UpdateFile;
  finally
    Free;
  end;
end;

DeddyH 20. Sep 2007 15:01

Re: INI Fragen wie immer
 
Naja, nicht helfen wollen und das Problem nicht sehen sind 2 verschiedene Dinge ;)

SaFu 20. Sep 2007 21:04

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:

inherited 20. Sep 2007 21:29

Re: INI Fragen wie immer
 
Du hast die lösung doch bereits selbst gegeben?

SaFu 20. Sep 2007 21:31

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:
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;

marabu 21. Sep 2007 06:51

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:
//  ...
    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

SaFu 21. Sep 2007 07:20

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

Tormentor32 21. Sep 2007 07:33

Re: INI Fragen wie immer
 
Du kannst Farben einfach als integer speichern, probier das mal!

SaFu 21. Sep 2007 07:36

Re: INI Fragen wie immer
 
mit dem colorToInt

Hawkeye219 21. Sep 2007 07:57

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

SaFu 21. Sep 2007 08:14

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.

inherited 21. Sep 2007 13:25

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.

SaFu 21. Sep 2007 16:13

Re: INI Fragen wie immer
 
Wurde es nicht Posten wenn ich es nicht schon Probiert hätte

und ich denke mal das es nicht so schwere Fragen sind für euch habe den rat schlag auch befolgt und das Problem teils gelößt

und zwar hab ich es jetz einfach in einen Timer gesetzt weil Form create und show auch nicht helfen

Delphi-Quellcode:
//========Geschwindigkeit der Laufschrift ändern================================
procedure TForm6.SpinEdit1Change(Sender: TObject);
begin
 JsRunningText1.Steps:= SpinEdit1.Value; // Stufe einstellen
 Timer1.Enabled:= true;
end;

procedure TForm6.Timer1Timer(Sender: TObject);
begin
 Form3.JsRunningText1.Steps:= Form6.SpinEdit1.Value;
 Timer1.Enabled:= False;
end;
so gehts jetzt aber ich kann doch jetzt nicht alles in einen timer setzten??

Und das Problem mit der Farbe habe ich auch noch immer

SaFu 23. Sep 2007 22:39

Re: INI Fragen wie immer
 
Hi ich versuche es einfach nochmal und hoffe und bitte das mir vielleicht doch noch einer hilft

wie gesagt die meisten fehler habe ich behoben in dem ich einen timer gesetzt habe aber das mit dem speichern der Farben in die ini datei geht net so wie ich mir das vor stelle

so speicher ich das ganze

Delphi-Quellcode:
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;
        WriteString(laufschrifttext,farbe,(ColorToString(ColorDialog1.Color))); // hier speicher ich das
        Form3.JSRunningText2.Color:= ColorDialog1.Color;

        UpdateFile;
       end;
      finally
     Free;
   end;
  end;
end;
das steht dann in der ini
Delphi-Quellcode:
Farbehintergrund=clLime
so versuche ich das dann wieder aufzu rufen aber das geht nicht
Delphi-Quellcode:
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, 0);
 
  JSRunningText1.Color:= StringToColor(ReadString(Laufschrifttext,farbe,(JSRunningText1.Color))); // hier bekomme ich einen Fehler

  finally
    Free;
  end;
end;
inkompatieble typen String und Tcolor

wo ist der Fehler :stupid:

marabu 24. Sep 2007 05:17

Re: INI Fragen wie immer
 
Moin Sascha,

der Default-Wert bei deinem ReadString() muss ein String sein, du übergibst aber einen TColor-Wert:

Delphi-Quellcode:
// hier bekomme ich einen Fehler:
JSRunningText1.Color := StringToColor(ReadString(Laufschrifttext, farbe, (JSRunningText1.Color)));
// besser so:
JSRunningText1.Color := StringToColor(ReadString(Laufschrifttext, farbe, ColorToString(JSRunningText1.Color)));
Freundliche Grüße

SaFu 24. Sep 2007 11:57

Re: INI Fragen wie immer
 
Danke marabu jetzt funzt es und ich verspreche in der Zukunft mehr eigeninitiative zu zeigen danke an alle

Ralf Kaiser 24. Sep 2007 13:31

Re: INI Fragen wie immer
 
Noch ein kleiner gutgemeinter Tipp: formulier deine Fragen etwas aussagekräftiger!

Statt:

"da bekomm ich einen Fehler"

wär es z.B. besser:

"an dieser Stelle wird eine Zugriffsverletzung gemeldet"

Bei der ersten Variante muss derjenige der antworten will eventuell erst das ganze selbst in Delphi ausprobieren um zu sehen welchen Fehler das Programm erzeugt, bei der zweiten Variante weiss man sofort: da wird auf etwas nicht erzeugtes zugegriffen.

Je genauer du dein Problem bschreibst desto schneller und treffender werden Antworten und Lösungsvorschläge sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 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