Entwickler-Ecke
Dateizugriff - Ini Datei ;)
Leathl - Sa 11.01.03 17:42
Titel: Ini Datei ;)
---
tommie-lie - Sa 11.01.03 18:06
nimm doch einfsach 'ne INI-Datei.
Dafür gibt's in Delphi schon funktionen für. Wenn du dann nicht willst, daß hinter der Datei .ini steht und somit jeder erfahrene Windowsanwender gleich weiß, wie die Datei aufgebaut ist, kannst du die Dateiendung ja immer noch ändern (in tcl meinetwegen). Aber vom Aufbau her ist sie trotzdem eine INI-Datei, die recht einfach gestrickt sind (clever, was?).
Leathl - Sa 11.01.03 18:49
---
Klabautermann - Sa 11.01.03 19:52
Hallo,
| Leathl hat folgendes geschrieben: |
| ich weiss, dass es wie eine inidatei ist, aber ich wollte eigentlich keine inidatei ;) |
dann kannst du auch z.B. mit Typisierten Dateien arbeiten. Ein Topic zu dem Thema findest du
hier [
http://www.auq.de/viewtopic.php?p=3754#3754].
Gruß
Klabauterann
Leathl - Sa 11.01.03 19:57
---
tommie-lie - Sa 11.01.03 20:04
warum so umständlich?
Mach's doch genau umgekehrt:
INI-Dateien haben Sections und Werte.
Als Sections nimmst du die Sparten, als Werte die Einträge darin. Also so:
[Sparte1]
count=5
1=a
2=b
3=c
4=d
5=e
[Sparte2]
count=2
1=f
2=g
Count gibt also an, wieviele einträge da sind (wäre sonst schwieriger mit INI-Dateien...) und du hast für jede der Sparten eine Section.
Leathl - So 12.01.03 00:01
---
Delete - So 12.01.03 03:51
Also weißt du doch nicht, wie Ini-dateien funktionieren oder wie? Denn wenn du es wüßtest, sollte das ganze kein Problem sein. Kuck dir einfach noch mal das Tutorial an.
Leathl - So 12.01.03 15:00
---
Tino - So 12.01.03 19:28
Hi,
Zugriff auf die Spaltenüberschriften bekommst Du so:
Quelltext
1:
| ListView1.Column [0].Caption := 'Erste Spalte'; |
Zugriff auf die Items:
Quelltext
1:
| ListView1.Items [0].Caption := 'Erster Eintrag'; |
Schau Dir mal in der Hilfe unter den Eigenschaften
Items die Beispiele an!
Gruß
TINO
Leathl - So 12.01.03 20:48
---
Tino - Mo 13.01.03 08:33
Hallo Leathl,
fangen wir mal am Anfang an:
Quelltext
1:
| for i:= 1 to ListView1.Items-1 do |
Du greifst hier direkt auf die Eigenschaft
Items zu. Das hat wenig sinn da Du lieber auf die Eigenschaft
Count verweisen solltest. Außerdem solltest Du die For-Next-Schleife bei 0 beginnen lassen:
Quelltext
1:
| for i := 0 to ListView1.Items -1 Do |
Da Du nach dieser Zeile kein
Begin geschrieben hast wird nur die darauf folgende Zeile in der For-Next-Schleife ausgeführt. Also: setz ein Begin und ein End ein:
Quelltext
1: 2: 3: 4:
| for i := 0 to ListView1.Items -1 Do Begin { ... } End; |
Warum erstellst Du das Ini-Objekt bei jedem durchlauf der Schleife? Macht glaube ich auch wenig sinn. Deshalb pack es vor dem Begin der Schleife:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Var i: Integer; Ini: tIniFile; Begin Ini := tIniFile.Create ('tlc.ini');
For i := 0 To ListView1.Items -1 Do Begin { ... } End;
Ini.Free; End; |
In der For-Next-Schleife müssen jetzt nach ein ander die Items (also die Einträge in der ListView) gespeichert werden. Die Caption der Einträge bekommst Du so:
Quelltext
1:
| ListView1.Items [I].Caption |
Da deine ListView ja anscheinend 4 Spalten besitzt musst Du noch die SubItems speichern. An diese kommst Du zum Beispiel so:
Quelltext
1:
| ListView1.Items [I].SubItems [0] |
Da ich aus Deinem Code-Beispiel nicht schlau geworden bin wie Du die Einträge genau abgespeichern willst kann ich Dir auch nicht genau sagen wie der Code innerhalb der For-Next-Schleife aussieht. Aber mit den o. g. Hinweisen solltest Du schon mal vorankommen. Wenn nicht dann poste einfach!
Gruß
TINO
Leathl - Mo 13.01.03 14:54
---
Delete - Mo 13.01.03 15:53
Mit ParamStr(0) bekommst du dein Programmpfad inklusive Anwendungsnamen.
Leathl - Mo 13.01.03 20:30
---
Tino - Di 14.01.03 09:30
Hi,
was ich an Deinem Code nicht verstehe sind
- Warum schreibst Du die folgenden Anweisungen in die For-Next-Schleife?
Quelltext
1: 2: 3: 4: 5:
| ini.WriteString('Daten','Lehrer/in',Edit1.Text); ini.WriteString('Daten','LTel',Edit2.Text); ini.WriteString('Daten','Schule',Edit3.Text); ini.WriteString('Daten','Klasse/Stufe',Edit4.Text); ini.WriteString('Daten','Jahrgang',Edit5.Text); |
- Warum seht die Anweisung
Ini.Free
Innerhalb der For-Next-Schleife?
Gruß
TINO
Leathl - Di 14.01.03 16:02
---
Leathl - Mi 15.01.03 14:19
---
Tino - Mi 15.01.03 14:31
Hallo,
ich würde Dir erstmal vorschlagen Deinen Quelltext ordentlich zu formatieren.
Bist Du sicher das Deine IF-Anweisung
Quelltext
1: 2: 3: 4:
| if OpenDialog1.Execute then ListView1.Clear; OpenDialog1.DefaultExt:= 'ini'; {...} |
korrekt ist? Fehlt da nicht ein Begin und ein End? Also so:
Quelltext
1: 2: 3: 4: 5: 6:
| if OpenDialog1.Execute then Begin ListView1.Clear; OpenDialog1.DefaultExt:= 'ini'; {...} End; |
Gruß
TINO
Leathl - Mi 15.01.03 14:54
---
Leathl - Do 16.01.03 13:06
---
DataCool - Do 16.01.03 23:31
Hi,
im letzten posting hast Du eine Fehlermeldung bekommem, weil :
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:
| procedure TForm1.Button5Click(Sender: TObject); var NewItem1: tListItem; i: Integer; j: Integer; begin if OpenDialog1.Execute then OpenDialog1.DefaultExt := 'ini'; ini := TIniFile.Create(OpenDialog1.FileName); try i := ini.ReadInteger('Daten', 'Count', 0); Edit1.Text := ini.ReadString('Daten', 'Lehrer/in', ''); Edit2.Text := ini.ReadString('Daten', 'LTel', ''); Edit3.Text := ini.ReadString('Daten', 'Schule', ''); Edit4.Text := ini.ReadString('Daten', 'Klasse/Stufe', ''); Edit5.Text := ini.ReadString('Daten', 'Jahrgang', ''); myListView.items.beginUpdate; myListView.items.clear; for j := 0 to i - 1 do begin // deshalb die Fehlermeldung, wohoer soll der Listview sonst auch wissen // das er ein neues Item hat. In manchen Fällen hilft auch Doku lesen ;-) NewItem1 := myListView.items.add; NewItem1.Caption := ini.ReadString(IntToStr(j), 'Sparte1', ''); NewItem1.SubItems.Add(ini.ReadString(IntToStr(j), 'Sparte2', '')); NewItem1.SubItems.Add(ini.ReadString(IntToStr(j), 'Sparte3', '')); NewItem1.SubItems.Add(ini.ReadString(IntToStr(j), 'Sparte4', '')); end; myListView.items.EndUpdate; finally ini.Free; end; end; |
Außerdem ist es überflüssig die Eigenschaft Count in die Ini-Datei zu Schreiben. Denn wie Du in der Online-Doku nachlesen kannst gibt es die Methode .readSections
Leathl - Fr 17.01.03 08:53
---
Leathl - Fr 17.01.03 09:05
---
Raphael O. - Fr 17.01.03 09:25
z.B. erst in ein memo oder richedit kopieren und dann drucken...
Fiji-Fighter
Tino - Fr 17.01.03 09:32
| Leathl hat folgendes geschrieben: |
| so... jetzt bin ich beim problem mit dem drucken... |
Neue Frage = neues Topic! Also bitte ein neues Topic erstellen!
Gruß
TINO
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!