Autor Beitrag
Eissbear
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 30.03.06 13:05 
Hallo

ich muss eine kleine Datenbank schreiben mit Folienpreise eines Herstellers und dem Datum ab wann diese Gültig ist.

Also im Prinzip muss ich später dem Programm sagen können Hersteller XY und dann Datum TT.MM.JJ und das Programm sagt mir den Folienpreis. Wenn zu dem Datum kein Folienpreis da ist soll er das was Zeitlich gesehen das letzte vor dem Datum war nehmen.

Ich dachte da an eine INI file aber dort kann ich ja nur 3 Werte speichern, nun die Frage ^^ ist es möglich dem Wert ein Datum richtig zuzuordnen, dass das Programm auch als Datum interpretiert?
Wenn nicht, welchem Datei Typ kann ich 5 Werte zuordnen? Oder hat jmd ne andere Lösung wie er leichter das voherige Datum wählt?

Ich dachte das ich ihn fals er das Datum nicht findet halt erst bei dem Monat und Jahr nach einem Tag sucht der vor dem angegebenen ist und dann halt einen Monat früher, usw.

Hoffe es ist deutlich geworden was ich will^^.

Schonmal vielen Dank im vorraus

Mfg Eissbear

Edit: Achja wie lasse ich Delphi die *.ini file im selben ordner speicher wie das Projekt ist? Er speichert bei angabe keines Pfades in den Windows Ordner des ist irgendwie unpraktisch. Danke
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Do 30.03.06 13:21 
nimm die Firma als Sektion
mache eine Eintrag Count=Anzahl

Beispiel:
[SuchMinAG]
Count=1
ItemP0= 1,10€ // Preis[0]
ItemD0= 10.10.2004 // Datum[0]
...

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 30.03.06 13:23 
@ edit:
dazu bietet sich "extractfilepath(application.ExeName)" an. Dieses Codeschnipsel gibt den pfad zu deiner Exedatei an.
Mit memo.lines.savetofile((extractfilepath(application.ExeName))+'Datei.ini');

kannst du nun deine ini datei direkt in dem ordner, in dem deine exe-datei liegt, speichern

statt "memo.lines" musst du natürlich deine komponente angeben, deren inhalt du speichern willst ;)
Eissbear Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 04.04.06 14:09 
Hallo,

Sry wegen der späten Meldung hatte sehr viel um die Ohren und kam nicht dazu das Programm weiter zu schreiben.

Mit der INI file richtig speichern hats jetzt geklappt danke.

Aber was mir ein ein Count eintrag bringen soll verstehe ich nicht, ich kann nicht vom User erwarten alles in cronologischer Reihenfolge anzugeben.

Die Einträge sehen eher so aus

[Firma]
12.03.05 = 1,50
19.04.05 = 1,52
...

vn daher denke ich das meine einzige Möglichkeit ist beim Lesen das Datum zuerst auszulesen und den String in einzelne Zahlen zu unterteilen und dann so näher das Datum zu spezifizieren.
Das mit dem String zerteilen bekomme ich schon hin. Aber wie komme ich nur ans Datum? Erst alles in eine ListBox schreiben ist klar und dann?



Hätte noch eine Idee das ich vllt einfach bei der eingabe des Datums das Format nen bissel umänder in z.B. 12.10.05 -> 051012
Dann könnte ich einfach die nächst größe Zahl suchen und die nächst kleinere Zahl und das dann einfach ausgeben.

Na ich weiss halt net stehe voll auf dem Schlauch bin für jede Idee Dankbar.

Mfg Eissbear

_________________
Eissbear 4 EvER
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Di 04.04.06 14:46 
Ich hätte es so gemacht (ungetestet; Setlength sollte man so nicht verwenden (zu überarbeiten)):
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
unit unitTest;

interface
type
TMyRecord = record
    Firma: String;
    Datum: TDateTime;
    Preis: Single;
  end;
TMyArray = array of TMyRecord;

procedure LoadFromIniFile (const AFileName: String);

implementation

uses
  Classes, IniFiles, SysUtils;

var
  MyArray: TMyArray;

procedure LoadFromIniFile (const AFileName: String);
var
  F: TIniFile;
  S: TStringList;
  I,J,C,L: Integer;
begin
  if FileExists (AFileName) then
    begin
      Finalize (MyArray);
      F := TIniFile.Create (AFileName);
      S := TStringList.Create;
      F.ReadSections(S);
      for I := 0 to S.Count -1 do
      begin
        C := F.ReadInteger(S[I],'Count',0);
        L := Length(MyArray);
        SetLength (MyArray,L+C);
        for J := 0 to C-1 do
        begin
          MyArray[L+J].Firma := S[I];
          MyArray[L+J].Datum := F.ReadDateTime(S[I],'ItemD'+IntToStr(J),0);
          MyArray[L+J].Preis := F.ReadFloat(S[I],'ItemP'+IntToStr(J),0)
        end;
      end;
      S.Free;
      F.Free;
      // Liste sortieren
    end;
end;

end.

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!