Entwickler-Ecke

Dateizugriff - Ini.WriteString('Kategorie', Edit2.Text, Edit3.Text);


DSl1mSh4dy - Sa 10.04.10 21:03
Titel: Ini.WriteString('Kategorie', Edit2.Text, Edit3.Text);
Hallo zusammen,

muss etwa folgendes bewerkstelligen:
Ini.WriteString('Kategorie', Edit2.Text, Edit3.Text);

Bekomme bei dieser Stelle immer einen Fehler in der 'ntdll.dll' - hat jemand eine Idee wie ich es machen kann? Das Problem ist, dass in Edit2 immer was anderes drin stehen kann und der Wert aus Edit3 der zu dem Produkt in Edit2 gehört in die Ini-Datei geschrieben werden soll!

z.Bsp.: Ini.WriteString('Elektronik', 'Apple MacBook', '1299,00');
Ini.WriteString('Elektronik', 'Apple IPod Touch 32GB', '149,00');

und in Edit2 steht dann halt immer das Produkt (Apple MacBook oder Apple IPod Touch 32GB oder was auch immer) und in Edit3 der Preis (1299,00 oder 149,00 oder was auch immer) und so habe ich gehofft, dass es mit

Ini.WriteString('Elektronik', Edit2.Text, Edit3.Text);

funktionieren könnte - jemand eine Idee???

Über schnelle hilfreiche Tipps wäre ich sehr dankbar!

Danke und Gruß


MaPsTaR - Sa 10.04.10 21:06

Das ist an sich so richtig, vermute mal, dass der Fehler an anderer Stelle auftritt.

CODE???


DSl1mSh4dy - Sa 10.04.10 21:10

der komplette Code würde den Rahmen Sprengen. Hier der Ausschnitt indem mir der Fehler angezeigt wird:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
try
   if ((Form2.Edit6.Text = 'Eier'OR (Form2.Edit6.Text = 'Milch'OR (Form2.Edit6.Text = 'Wolle'OR (Form2.Edit6.Text = 'Honig'OR (Form2.Edit6.Text = 'Mayonnaise'OR (Form2.Edit6.Text = 'Käse'OR (Form2.Edit6.Text = 'Wollknäuel'OR (Form2.Edit6.Text = 'Bonbon')) then begin
      Ini.WriteString('Tierisch', Form2.Edit30.Text, Form2.Edit7.Text)  // Hier wird mir der Fehler angezeigt, aber nur weil die Bedngung zutrifft....
   end else begin
      Ini.WriteString('Pflanzlich', Form2.Edit30.Text, Form2.Edit7.Text)
   end;
   finally
      Ini.UpdateFile;
      Ini.Free
   end;

auf einem anderen Button habe ich das gleiche nur mit Ini.ReadString, also:

Delphi-Quelltext
1:
Form2.Edit7.Text := Ini.ReadString('Tierisch', Form2.Edit6.Text, '')                    

und das funktioniert ohne Fehler ......

Gruß

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


MaPsTaR - Sa 10.04.10 21:17

Da ich das hier nicht finden kann...
Öffnest du die Ini-Datei irgendwo auch mit Ini := TIniFile.Create(FileName);?

Setze bitte deinen Code in [DELPHI]-Tags


DSl1mSh4dy - Sa 10.04.10 21:25

Hier alles aus dem Button1Click zu der Ini.
Sry wegen den Delphi-Tags, bin neu hier und hatte es eben noch nicht gefunden.


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:
procedure TForm2.Button1Click(Sender: TObject);
var 
   berechnung: Extended;
   FarmiPreis: Extended;
   Prod: String;
   AProd: String;
   BProd: String;
   a: Integer;
   Ini: TIniFile;
begin
   ProgrammOrdner := ExtractFilePath(Application.ExeName) + 'Produkte.ini';
   Ini := TIniFile.Create(ProgrammOrdner);
   Speichern := Ini.ReadBool('Optionen''Speichern', false);
   if Speichern = true then begin
      if Form2.Edit5.Visible = true then begin
         try
           if ((Form2.Edit6.Text = 'Eier'OR (Form2.Edit6.Text = 'Milch'OR (Form2.Edit6.Text = 'Wolle'OR (Form2.Edit6.Text = 'Honig'OR (Form2.Edit6.Text = 'Mayonnaise'OR (Form2.Edit6.Text = 'Käse'OR (Form2.Edit6.Text = 'Wollknäuel'OR (Form2.Edit6.Text = 'Bonbon')) then begin
             Ini.WriteString('Tierisch', Form2.Edit30.Text, Form2.Edit7.Text)
           end else begin
             Ini.WriteString('Pflanzlich', Form2.Edit30.Text, Form2.Edit7.Text)
           end;
         finally
         end;
      end;
   end;
end;


Gruß


MaPsTaR - Sa 10.04.10 21:40

Kann dir erstmal nur sagen, dass Bool-Vergleiche auf = true unsicher sind...if Speichern then reicht aus.
Hast du dir die Procedure schonmal schrittweise angesehen, um zu testen, ob eventuell irgendwo fragwürdige Werte auftreten?


DSl1mSh4dy - Sa 10.04.10 21:48

okay, dann werd ich das mal ändern.
also ich kann dazu sagen, dass alles funktioniert ausser das in der Ini speichern. Wenn ich die WriteStrings ändere in

Delphi-Quelltext
1:
Ini.WriteString('Tierisch''Milch', Edit7.Text);                    


dann funktioniert das ja auch - also muss der Fehler ja dort auftreten .........


MaPsTaR - Sa 10.04.10 21:52

Sieht so aus.

Dann setz mal einen Breakpoint in der Zeile Ini.WriteString('Tierisch', Form2.Edit30.Text, Form2.Edit7.Text) und starte dein Programm. Wenn die Ausführung dann bei dem Breakpoint stehen bleibt, hältst du die Maus über das "Text" von Form2.Edit30.Text und wartest, bis dir der Wert angezeigt wird.

Wäre vielleicht hilfreich, wenn deine verwendeten Komponenten eindeutige Bezeichner hätten, mit Edit1 - Edit30 kann man schnell mal eine falsche erwischen.


DSl1mSh4dy - Sa 10.04.10 21:58

super, danke dir! Fehler gefunden ;-)
Einfach das falsche Edit gehabt.

Danke!

Gruß