Autor Beitrag
Anarkids
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: Di 04.04.06 12:19 
Darf ich vorstellen? MEIN neuestes Problem:
ausblenden 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','-');
   //ich möchte hier gern NUR die überschriften der abschnitte aus
   //meiner ini-datei in den array "names" kopieren!!!
  finally
   ini.free;
  end;


ist ja alles beschrieben

_________________
Mr.D
Change begins with you - TODAY!
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Di 04.04.06 12:27 
Versuchs so, nicht mit Array, sondern TStringList:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: Di 04.04.06 12:37 
ausblenden 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
   //hier meckert er: inkompatible typen!
   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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: Di 04.04.06 13:55 
*g* das is gut zu wissen, bischer ist sowas zum Glück noch nicht vorgekommen!

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: 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
ausblenden 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