![]() |
Warum wird das Memo nicht komplett aus der INI geladen?
Hall zusammen,
ich habe heute folgenden Code geschrieben:
Code:
Doch irgendwie liest er nur die erste Zeile aus!
memo1.Lines[0]:=ini.ReadString('Data','Adresszeile0','');
memo1.Lines[1]:=ini.ReadString('Data','Adresszeile1',''); memo1.Lines[2]:=ini.ReadString('Data','Adresszeile2',''); memo1.Lines[3]:=ini.ReadString('Data','Adresszeile3',''); memo1.Lines[4]:=ini.ReadString('Data','Adresszeile4',''); memo1.Lines[5]:=ini.ReadString('Data','Adresszeile5',''); memo1.Lines[6]:=ini.ReadString('Data','Adresszeile6',''); memo1.Lines[7]:=ini.ReadString('Data','Adresszeile7',''); memo1.Lines[8]:=ini.ReadString('Data','Adresszeile8',''); memo1.Lines[9]:=ini.ReadString('Data','Adresszeile9',''); Die Saveroutine sieht so aus:
Code:
Warum funktioniert das nicht?ini.WriteString('Data','Adresszeile0',memo1.Lines[0]); ini.WriteString('Data','Adresszeile1',memo1.Lines[1]); ini.WriteString('Data','Adresszeile2',memo1.Lines[2]); ini.WriteString('Data','Adresszeile3',memo1.Lines[3]); ini.WriteString('Data','Adresszeile4',memo1.Lines[4]); ini.WriteString('Data','Adresszeile5',memo1.Lines[5]); ini.WriteString('Data','Adresszeile6',memo1.Lines[6]); ini.WriteString('Data','Adresszeile7',memo1.Lines[7]); ini.WriteString('Data','Adresszeile8',memo1.Lines[8]); ini.WriteString('Data','Adresszeile9',memo1.Lines[9]); Habe ich nen Fehler gemacht? Danke |
Re: Warum wird das Memo nicht komplett aus der INI geladen?
Die Zeilen gibt es vermutlich noch nicht, daher kannst du auf sie nicht so einfach zu greifen. VErsuch es mal Memo1.Lines.Add('test');
|
Re: Warum wird das Memo nicht komplett aus der INI geladen?
Mach mal folgendes:
Delphi-Quellcode:
Das Problem ist, dass es die Zeilen noch garnicht gibt, die du setzen willst!
memo1.lines.add(ini.ReadString('Data','Adresszeile0',''));
memo1.lines.add(ini.ReadString('Data','Adresszeile1','')); memo1.lines.add(ini.ReadString('Data','Adresszeile2','')); memo1.lines.add(ini.ReadString('Data','Adresszeile3','')); memo1.lines.add(ini.ReadString('Data','Adresszeile4','')); memo1.lines.add(ini.ReadString('Data','Adresszeile5','')); memo1.lines.add(ini.ReadString('Data','Adresszeile6','')); memo1.lines.add(ini.ReadString('Data','Adresszeile7','')); memo1.lines.add(ini.ReadString('Data','Adresszeile8','')); memo1.lines.add(ini.ReadString('Data','Adresszeile9','')); [edit]Schon wieder einer mit nem Speed-Hack!!! :mrgreen:[/edit] |
Re: Warum wird das Memo nicht komplett aus der INI geladen?
Hallo,
Danke für die Antworten :oops:. Währe da jetzt echt nicht draufgekommen *schäm* Danke! |
Re: Warum wird das Memo nicht komplett aus der INI geladen?
PS: Das schreit ja schon nach ner Schleife :mrgreen:
Gruß Stephan |
Re: Warum wird das Memo nicht komplett aus der INI geladen?
Hi,
Eine frisch initialisierte Memo-Komponente hat nur ein Element in TMemo.Lines. Daher:
Delphi-Quellcode:
Noch besser:
memo1.Lines.Clear;
memo1.Lines.add( ini.ReadString('Data','Adresszeile0','')); {...}
Delphi-Quellcode:
Einfacher:
memo1.Lines.Clear;
for i:=0 to 9 do memo1.Lines.add( ini.ReadString('Data','Adresszeile'+IntToStr(i),''));
Delphi-Quellcode:
Gruß,
Memo1.Lines.SaveToFile('C:\Adressdaten.txt');
Memo1.Lines.LoadFromFile('C:\Adressdaten.txt'); {Achtung: beides in try...except Blöcke setzen, da eine Exception auftreten kann, wenn die Datei beim Schreibzugriff bereits verwendet wird oder beim Lesezugriff nicht existiert} Dani Edit: Bin zuuu langsaaaam :| |
Re: Warum wird das Memo nicht komplett aus der INI geladen?
Warum liest Du Deine Zeilen nicht einfach so ein :
Code:
ini.ReadSection ('Data',memo1.Lines);
|
Re: Warum wird das Memo nicht komplett aus der INI geladen?
hallo dani,
sicherlich währe das Lodfromfile und savetofile einfacher aber es muss ja eine Datei sein ;-) meine ganze Routine sieht ja so aus:
Delphi-Quellcode:
Also praktisch jede Rechnung in EINE Datei ;-)procedure Tform7.loadrechnung(filename:String); var x, y, i:Integer; begin ini:=Tinifile.Create(filename); memo1.clear; memo2.Clear; edit1.text:=ini.ReadString('Data','Rechnungsnummer',''); datetimepicker1.date:=strtodate(ini.ReadString('Data','Rechnungsdatum',datetostr(now))); edit2.Text:=ini.ReadString('Data','Auftragsnummer',''); memo1.Lines.Add(ini.ReadString('Data','Adresszeile0','')); memo1.Lines.Add(ini.ReadString('Data','Adresszeile1','')); memo1.Lines.Add(ini.ReadString('Data','Adresszeile2','')); memo1.Lines.Add(ini.ReadString('Data','Adresszeile3','')); memo1.Lines.Add(ini.ReadString('Data','Adresszeile4','')); memo1.Lines.Add(ini.ReadString('Data','Adresszeile5','')); memo1.Lines.Add(ini.ReadString('Data','Adresszeile6','')); memo1.Lines.Add(ini.ReadString('Data','Adresszeile7','')); memo1.Lines.Add(ini.ReadString('Data','Adresszeile8','')); memo1.Lines.Add(ini.ReadString('Data','Adresszeile9','')); memo2.Lines.Add(ini.ReadString('Data','Text1','')); memo2.Lines.Add(ini.ReadString('Data','Text2','')); memo2.Lines.Add(ini.ReadString('Data','Text3','')); memo2.Lines.Add(ini.ReadString('Data','Text4','')); memo2.Lines.Add(ini.ReadString('Data','Text5','')); memo2.Lines.Add(ini.ReadString('Data','Text6','')); memo2.Lines.Add(ini.ReadString('Data','Text7','')); memo2.Lines.Add(ini.ReadString('Data','Text8','')); x:=0; Repeat x:=x+1; Y:=-1; repeat y:=y+1; stringgrid1.Cells[x,y]:=ini.ReadString('Rechnung',inttostr(x)+'_'+inttostr(y),''); until Y>=21; until x>=5; end; procedure Tform7.saverechnung(filename, Rechnungsname:String); var x, y, i:Integer; begin ini:=Tinifile.Create(filename+Rechnungsname+'.MFR'); ini.WriteString('Data','Rechnungsnummer',edit1.Text); ini.WriteString('Data','Rechnungsdatum',datetostr(Datetimepicker1.Date)); ini.WriteString('Data','Auftragsnummer',edit2.Text); ini.WriteString('Data','Adresszeile0',memo1.Lines[0]); ini.WriteString('Data','Adresszeile1',memo1.Lines[1]); ini.WriteString('Data','Adresszeile2',memo1.Lines[2]); ini.WriteString('Data','Adresszeile3',memo1.Lines[3]); ini.WriteString('Data','Adresszeile4',memo1.Lines[4]); ini.WriteString('Data','Adresszeile5',memo1.Lines[5]); ini.WriteString('Data','Adresszeile6',memo1.Lines[6]); ini.WriteString('Data','Adresszeile7',memo1.Lines[7]); ini.WriteString('Data','Adresszeile8',memo1.Lines[8]); ini.WriteString('Data','Adresszeile9',memo1.Lines[9]); ini.WriteString('Data','Text1',memo2.Lines[0]); ini.WriteString('Data','Text2',memo2.Lines[1]); ini.WriteString('Data','Text3',memo2.Lines[2]); ini.WriteString('Data','Text4',memo2.Lines[3]); ini.WriteString('Data','Text5',memo2.Lines[4]); ini.WriteString('Data','Text6',memo2.Lines[5]); ini.WriteString('Data','Text7',memo2.Lines[6]); ini.WriteString('Data','Text8',memo2.Lines[7]); x:=0; Repeat x:=x+1; Y:=-1; repeat y:=y+1; ini.WriteString('Rechnung',inttostr(x)+'_'+inttostr(y),stringgrid1.Cells[x,y]); until Y>=21; until x>=5; end; Gruß Andy |
Re: Warum wird das Memo nicht komplett aus der INI geladen?
Hallo Delphi_fanatic,
was macht readsection genau? Würde das dann nicht auch die Sachen von Memo2 miteinlesen? Danke |
Re: Warum wird das Memo nicht komplett aus der INI geladen?
ReadSection liest alle Werte, die in diesem Bereich stehen.
Aber um Abhilfe zu schaffen, kannst du's doch in unterschiedliche Bereiche schreiben...
Delphi-Quellcode:
Edit: Mist, das war ne Funktion, die ich mir mal selber geschrieben habe... :oops:
ini.WriteSection('Adresse',memo1.Lines);
ini.WriteSection('Text',memo1.Lines); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz