Autor |
Beitrag |
Anarkids
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: Di 04.04.06 12:19
Darf ich vorstellen? MEIN neuestes Problem:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| ini:=Tinifile.Create(ExtractFilePath(Application.ExeName)+'einstellungen.ini'); try setlength(names, 100); for h := low(names) to high(names) do names[h]:=ini.ReadString('...','Name','-'); finally ini.free; end; |
ist ja alles beschrieben
_________________ Mr.D
Change begins with you - TODAY!
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Di 04.04.06 12:27
Versuchs so, nicht mit Array, sondern TStringList:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var names: TStringList; begin ini:=Tinifile.Create(ExtractFilePath(Application.ExeName)+'einstellungen.ini'); names = TStringList.Create; try setlength(names, 100); for h := low(names) to high(names) do ini.ReadSections(names); finally ini.free; end; |
|
|
Anarkids 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: Di 04.04.06 12:37
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| ar names: TStringList; begin ini:=Tinifile.Create(ExtractFilePath(Application.ExeName)+'einstellungen.ini'); names = TStringList.Create; try setlength(names, 100); for h := low(names) to high(names) do ini.ReadSections(names); finally ini.free; end; |
kann es sein, dass names hier nicht global sein darf?
_________________ Mr.D
Change begins with you - TODAY!
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Di 04.04.06 12:59
jap, setlength will ein dynamisches array oder nen string.
deswegen gar nicht erst mit setlength arbeiten sondern direkt in die stringlist lesen.
in deinem fall:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| begin ini:=Tinifile.Create(ExtractFilePath(Application.ExeName)+'einstellungen.ini'); names = TStringList.Create; try ini.ReadSections(names); finally ini.free; end; |
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
Anarkids 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: Di 04.04.06 13:09
danke für die hilfe! *puh*
was kann ich denn machen, damit der gesamte inhalt von names jetzt ausgegeben wird? also mit einem array wär es kein problem, aber....*grummel*
_________________ Mr.D
Change begins with you - TODAY!
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Di 04.04.06 13:11
geht genauso wie mit arrays.
greif einfach auf names[i] zu.
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
Anarkids 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: Di 04.04.06 13:42
okai alles klar habs gemacht! öhm da is aber nochwas (jaja ich nerv, aber das is mir total wichtig gerade!):
kann ich TStringlist irgendwie fragen, wie viele Einträge es hat?
Weil ich möchte ja mit einer Schleife die in Names gespeicherten Namen in ein Stringgrid reinschreiben. Nur dafür braucht meine schleife auf ein Variables Ende.
Großes danke übrigens, ohne euch könnt ich meinem Chef nix präsentieren
(bin ja auch nur Praktikant)
_________________ Mr.D
Change begins with you - TODAY!
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Di 04.04.06 13:46
names.Count liefert dir die Anzahl der Einträge deiner Stringlist
edit: keine Angst. Wenn du anfängst zu nerven schreit garantiert jemand ^^
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
Anarkids 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: Di 04.04.06 13:55
*g* das is gut zu wissen, bischer ist sowas zum Glück noch nicht vorgekommen!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| c:=names.count ini:=Tinifile.Create(ExtractFilePath(Application.Exename)+'einstellungen.ini'); try for h = 1 to c do stringgrid1.cells[0,h]:=names[h]; finally ini.free; end; |
Wenn ich es so mache, dann gibt er mir beim Starten des Programmes folgende Debug-Exception:
Im Projekt Project1.exe ist eine Exception der Klasse EstringListError mit der Meldung 'Listenindex überschreitet das Maximum (3)' aufgetregen.
Weiß jetzt nicht genau, was ich damit anfangen soll 
_________________ Mr.D
Change begins with you - TODAY!
|
|
Anarkids 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: Di 04.04.06 13:57
ha okai...sorry
hab das problem noch selbst bereinigt. Habe einfach nur die -1 hinter dem c vergessen.
Man liest sich und danke nochmal!!!
_________________ Mr.D
Change begins with you - TODAY!
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Di 04.04.06 14:01
Lies mal die Fehlermeldung.
"Index überschreitet Maximum"
Das heisst du versuchst auf einen Index in der Stringlist zuzugreifen den es nicht mehr gibt.
Du hast wohl nicht bedacht, dass der ERSTE Eintrag der Stringliste den Index 0 und nicht 1 bekommt.
D.h. bei 3 Einträgen in der Liste ist der höchste Index 2.
Entsprechend folgende Code änderung
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| c:=names.count ini:=Tinifile.Create(ExtractFilePath(Application.Exename)+'einstellungen.ini'); try for h = 0 to c-1 do stringgrid1.cells[0,h+1]:=names[h]; finally ini.free; end; |
edit: Mist, zu langsam
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|