AGB  ·  Datenschutz  ·  Impressum  







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

Ini Datei Problem

Ein Thema von S4SH1981 · begonnen am 10. Mär 2012 · letzter Beitrag vom 10. Mär 2012
Antwort Antwort
S4SH1981

Registriert seit: 13. Jul 2007
59 Beiträge
 
#1

Ini Datei Problem

  Alt 10. Mär 2012, 20:43
Hallo zusammen,

habe folgendes Problem.
Im folgendem Code Speicher ich aus einer Listbox per Drag'n Drop Einträge und sortiere diese nach Tagen.
Das funktioniert soweit wunderbar.
Die Ini Datei sieht wie folgt aus.

Dateiname ist 2012-10-1.kw
[Montag]
Kunde=Edit1 Edit2.kd
Edit1 Edit22.kd
abc def.kd

Die gespeicherte KW ist nun KW 10. Ich möchte jetzt die Daten aus der Ini Datei für KW 10 auslesen und in den Listboxen anzeigen. Leider funktioniert das mal rein garnicht.
Ich bekomme es nur hin, dass ich entweder das Montag, oder den ersten Eintrag mit Kunde=Edit1. Edit2.kd in die Listbox auslesen lassen kann. Nie bekomme ich aber den gesamten Text unter der Sektion Montag in die Listbox geschrieben.

Es ist sicherlich ein einfaches Problem. Ich komme allerdings nicht drauf.
Wäre schön, wenn mir dazu je,and einen Lösungsansatz geben könnte.

Schonmal Danke

Anbei der Code:
Delphi-Quellcode:
unit KalMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, Spin, Grids, ExtCtrls, SRCal, Buttons, Inifiles;

type
  TMainForm = class(TForm)
    Label2: TLabel;
    Label3: TLabel;
    LblDatum: TLabel;
    LblFeiertag: TLabel;
    LblSternzeichen: TLabel;
    LblTagImJahr: TLabel;
    LblWocheImJahr: TLabel;
    LblMonat: TLabel;
    LblJahr: TLabel;
    SpinMonat: TSpinButton;
    SpinJahr: TSpinButton;
    Label5: TLabel;
    Kalender: TSRCalendar;
    LblSeason: TLabel;
    ListBox1: TListBox;
    Label1: TLabel;
    Label4: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    ListBox2: TListBox;
    ListBox3: TListBox;
    ListBox4: TListBox;
    ListBox5: TListBox;
    ListBox6: TListBox;
    ListBox7: TListBox;
    ListBox8: TListBox;
    ListBox9: TListBox;
    ListBox10: TListBox;
    ListBox11: TListBox;
    ListBox12: TListBox;
    ListBox13: TListBox;
    ListBox14: TListBox;
    ListBox15: TListBox;
    ListBox16: TListBox;
    ListBox17: TListBox;
    ListBox18: TListBox;
    ListBox19: TListBox;
    ListBox20: TListBox;
    ListBox21: TListBox;
    ListBox22: TListBox;
    Button1: TButton;
    Button2: TButton;
    procedure ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure KalenderChange(Sender: TObject);
    procedure SpinMonatDownClick(Sender: TObject);
    procedure SpinMonatUpClick(Sender: TObject);
    procedure SpinJahrDownClick(Sender: TObject);
    procedure SpinJahrUpClick(Sender: TObject);
    procedure KalenderDblClick(Sender: TObject);
    procedure KalenderMonthChange(Sender: TObject);
    procedure KalenderYearChange(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  MainForm: TMainForm;
  ini: Tinifile;

implementation

{$R *.DFM}

procedure ListFileDir(Path: string; FileList: TStrings);
var
  SR: TSearchRec;
begin
  if FindFirst(Path + '*.kd', faAnyFile, SR) = 0 then
  begin
    repeat
      if (SR.Attr <> faDirectory) then
      begin
        FileList.Add(SR.Name);
      end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
end;

procedure TMainForm.SpinMonatDownClick(Sender: TObject);
begin
  Kalender.PrevMonth;
end;

procedure TMainForm.SpinMonatUpClick(Sender: TObject);
begin
  Kalender.NextMonth;
end;

procedure TMainForm.SpinJahrDownClick(Sender: TObject);
begin
  Kalender.PrevYear;
end;

procedure TMainForm.SpinJahrUpClick(Sender: TObject);
begin
  Kalender.NextYear;
end;

procedure TMainForm.KalenderChange(Sender: TObject);
begin
  listbox2.clear;
  listbox3.clear;
  listbox4.clear;
  listbox5.clear;
  listbox6.clear;
  listbox7.clear;
  listbox8.clear;

  LblDatum.Caption:=FormatDateTime('dddd, dd. mmmm yyyy',Kalender.Date);
  LblTagImJahr.Caption:=IntToStr(Kalender.DayOfYear)+'. Tag im Jahr';
  LblWocheImJahr.Caption:=IntToStr(Kalender.WeekOfYear)+'. Woche im Jahr';

  Label7.Caption:=inttostr(kalender.weekofyear);
  Label8.Caption:=inttostr(kalender.weekofyear-1);
  label9.caption:=inttostr(kalender.weekofyear+1);

  if Kalender.HolidayNr<0 then
    LblFeiertag.Font.Color:=clNavy
  else
    LblFeiertag.Font.Color:=clRed;
  LblFeiertag.Caption:=Kalender.Holiday;
  LblSeason.Caption:=Jahreszeit[ord(Kalender.Season)];
  LblSternzeichen.Caption:='Sternzeichen: '+Sternzeichen[ord(Kalender.ZodiacSign)];
end;

procedure TMainForm.KalenderDblClick(Sender: TObject);
begin
  Kalender.Marked[Kalender.Day]:=not Kalender.Marked[Kalender.Day];
end;

procedure TMainForm.KalenderMonthChange(Sender: TObject);
begin
  LblMonat.Caption:=LongMonthNames[Kalender.Month];
end;

procedure TMainForm.KalenderYearChange(Sender: TObject);
begin
  LblJahr.Caption:=IntToStr(Kalender.Year);
end;



procedure TMainForm.FormCreate(Sender: TObject);
var i : byte;
begin
  ListFileDir('C:\FPV\KUNDEN\', ListBox1.Items);
  for i:=1 to 7 do
  Kalender.Date:=Date;
  KalenderChange(nil);
  KalenderMonthChange(nil);
  KalenderYearChange(nil);

  ListBox1.OnDragOver := ListBox1DragOver;
  ListBox2.OnDragOver := ListBox1DragOver;
  ListBox3.OnDragOver := ListBox1DragOver;
  ListBox4.OnDragOver := ListBox1DragOver;
  ListBox5.OnDragOver := ListBox1DragOver;
  ListBox6.OnDragOver := ListBox1DragOver;
  ListBox7.OnDragOver := ListBox1DragOver;
  ListBox8.OnDragOver := ListBox1DragOver;

  ListBox1.OnDragDrop := ListBox1DragDrop;
  ListBox2.OnDragDrop := ListBox1DragDrop;
  ListBox3.OnDragDrop := ListBox1DragDrop;
  ListBox4.OnDragDrop := ListBox1DragDrop;
  ListBox5.OnDragDrop := ListBox1DragDrop;
  ListBox6.OnDragDrop := ListBox1DragDrop;
  ListBox7.OnDragDrop := ListBox1DragDrop;
  ListBox8.OnDragDrop := ListBox1DragDrop;

  Listbox1.Dragmode := dmAutomatic;
  Listbox2.Dragmode := dmAutomatic;
  Listbox3.Dragmode := dmAutomatic;
  Listbox4.Dragmode := dmAutomatic;
  Listbox5.Dragmode := dmAutomatic;
  Listbox6.Dragmode := dmAutomatic;
  Listbox7.Dragmode := dmAutomatic;
  Listbox8.Dragmode := dmAutomatic;

  ListBox1.MultiSelect := true;
  ListBox2.MultiSelect := true;
  ListBox3.MultiSelect := true;
  ListBox4.MultiSelect := true;
  ListBox5.MultiSelect := true;
  ListBox6.MultiSelect := true;
  ListBox7.MultiSelect := true;
  ListBox8.MultiSelect := true;
end;

procedure TMainForm.Button1Click(Sender: TObject);
begin
ini:=TIniFile.create('C:\FPV\KW\' + lbljahr.Caption + '-'+ label7.caption+'-1.kw');
ini.WriteString('Montag','Kunde', '' +listbox2.Items.Text);
ini:=TIniFile.create('C:\FPV\KW\' + lbljahr.Caption + '-'+ label7.caption+'-2.kw');
ini.WriteString('Dienstag','Kunde', '' +listbox3.Items.Text);
ini:=TIniFile.create('C:\FPV\KW\' + lbljahr.Caption + '-'+ label7.caption+'-3.kw');
ini.WriteString('Mittwoch','Kunde', '' +listbox4.Items.Text);
ini:=TIniFile.create('C:\FPV\KW\' + lbljahr.Caption + '-'+ label7.caption+'-4.kw');
ini.WriteString('Donnerstag','Kunde', '' +listbox5.Items.Text);
ini:=TIniFile.create('C:\FPV\KW\' + lbljahr.Caption + '-'+ label7.caption+'-5.kw');
ini.WriteString('Freitag','Kunde', '' +listbox6.Items.Text);
ini:=TIniFile.create('C:\FPV\KW\' + lbljahr.Caption + '-'+ label7.caption+'-6.kw');
ini.WriteString('Samstag','Kunde', '' +listbox7.Items.Text);
ini:=TIniFile.create('C:\FPV\KW\' + lbljahr.Caption + '-'+ label7.caption+'-7.kw');
ini.WriteString('Sonntag','Kunde', '' +listbox8.Items.Text);
end;

procedure TMainForm.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  accept := (Source is TListBox) and (sender<>Source);
end;

procedure TMainForm.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var i,i2 : integer;
    lbSource,lbSender : TListBox;
begin
  lbSource := Source as TListBox;
  lbSender := Sender as TListbox;
  //Drag and drop der gleichen LB verhindern
  if lbSource <> lbSender then
    begin
      //items kopieren
      //du löschst items, deswegen müßte die for Schleife rückwärts zählen, dann würden die itmes aber spiegelverkehrt hinzugefügt
      //ich nehm da lieber eine while schleife, eine for-schleife macht dir das leben schwerer (finde ich)
      i:=0;
      while i<=lbSource.count-1 do //hier muß Source stehen, du willst von source nach Sender!
        begin
          if lbSource.Selected [i] then
            begin
              //Variante 1 = hinzufügen
              //lbSender.Items.Add(lbSource.Items[i]);

              //Variante 2 = Einfügen
              i2:=lbSender.ItemAtPos(point(x,y),false);
              lbSender.Items.insert(i2,lbSource.Items[i]);

              //Einträge in sourceListbox löschen
              lbSource.Items.Delete (i);
              continue; //inc(i) "überspringen" und mit gleichem item (wegen Löschung) weiterarbeiten
            end;
          inc(i);
        end;
    end;
      listbox1.clear;
      ListFileDir('C:\FPV\KUNDEN\', ListBox1.Items);
end;


end.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Ini Datei Problem

  Alt 10. Mär 2012, 21:02
Ob es das ist weiß ich nicht, aber auf die Schnelle siehe ich hier einen Fehler:

Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
begin
ini:=TIniFile.create('C:\FPV\KW\' + lbljahr.Caption + '-'+ label7.caption+'-1.kw');
ini.WriteString('Montag','Kunde', '' +listbox2.Items.Text);
Nach meiner Kenntnis gehört dahinter zuerst ein ini.Free; Wobei ich sagen muß, dass man bei dir sehr vieles optimieren kann, da du achtfach machst, was einfach ginge.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Ini Datei Problem

  Alt 10. Mär 2012, 21:14
Ob es das ist weiß ich nicht, aber auf die Schnelle siehe ich hier einen Fehler:

Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
begin
ini:=TIniFile.create('C:\FPV\KW\' + lbljahr.Caption + '-'+ label7.caption+'-1.kw');
ini.WriteString('Montag','Kunde', '' +listbox2.Items.Text);
Nach meiner Kenntnis gehört dahinter zuerst ein ini.Free; Wobei ich sagen muß, dass man bei dir sehr vieles optimieren kann, da du achtfach machst, was einfach ginge.
//Edit:

Hier vielleicht eine Anregung man du etwas kürzen könntest (ungeprüft):

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
  procedure ListBoxX(ListBox: TListBox);
  begin
    ListBox.OnDragOver := ListBox1DragOver;
    ListBox.OnDragDrop := ListBox1DragDrop;
    Listbox.Dragmode := dmAutomatic;
    ListBox.MultiSelect := true;
  end;
var i : byte;
begin
  ListFileDir('C:\FPV\KUNDEN\', ListBox1.Items);
  for i:=1 to 7 do
  Kalender.Date:=Date;
  KalenderChange(nil);
  KalenderMonthChange(nil);
  KalenderYearChange(nil);

  ListBoxX(ListBox1);
  ...
end;

procedure TMainForm.Button1Click(Sender: TObject);
   procedure WriteIniStr(Path, Section, Ident, Value: String);
   var
     ini: TIniFile;
   begin
     ini:=TIniFile.create(Path);
     ini.WriteString(Section, Ident, Value);
     ini.Free;
   end
begin
  WriteIniStr('C:\FPV\KW\' + lbljahr.Caption + '-'+ label7.caption+'-1.kw',
    'Montag','Kunde', '' +listbox2.Items.Text);
  ...
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#4

AW: Ini Datei Problem

  Alt 10. Mär 2012, 21:16
Ich möchte jetzt die Daten aus der Ini Datei für KW 10 auslesen und in den Listboxen anzeigen. Leider funktioniert das mal rein garnicht.
Joar, das ist auch vollkommen richtig und sehr verständlich.
Ich kann nämlich keinerlei Code finden, über welchen die Datei ausgelesen wird.

Und zu deiner INI-Variable:
http://www.delphipraxis.net/167043-w...ablen-hin.html
Stichwort: Lokal

weiterer Tipp: Resourcenschutzblock
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Ini Datei Problem

  Alt 10. Mär 2012, 21:26
Hallo,

warum schreibst du eigentlich 7 mal das Date auf Kalender?

Delphi-Quellcode:
 for i:=1 to 7 do
   Kalender.Date:=Date;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Ini Datei Problem

  Alt 10. Mär 2012, 21:31
Das grundsätzliche Problem liegt darin, dass du keine korrekte Ini-Datei erzeugst.
Code:
[Section]
Ident=Value
Alles in der Zeile hinter dem Gleichheitszeichen ist der Value-Wert.
Du schreibst aber einen Zeilenumbruch in den Wert und der sorgt dafür, dass ein Teil eben nicht mehr in der Zeile steht und somit aus der Wertung fällt
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 18:03 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