Autor Beitrag
shroty
Hält's aus hier
Beiträge: 10


D7 Pers
BeitragVerfasst: Fr 22.10.04 10:32 
hi!

hab folgendes problem:

ich will was aus einer ini-datei auslesen.
hab das ini-tutorial und alles wie darin beschrieben gemacht und wollte die folgende funktion ausführen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
function TeNa(tkurz: string): string;
  name := TIniFileCreate('tena.ini');
  try
    tlang := name.ReadString('Teams', tkurz, tkurz);
  finally
  name.Free
end;


das ganze soll aus ’tena.ini’ ein kürzel ’tkurz’ zu einem kompletten namen machen ’tlang’.

nun kommt beim compilieren aber immer: Unbekannte Anweisung ’name’

ich hab 'name' unter var als TIniFile deklariert und auch unter uses IniFiles mit reingenommen!

kann mir jemand sagen woran das liegt, dass das nicht will. achso hab hier delphi 7 enterp.


ciao shroty
MrCoder
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65

WinXP, SuSE Linux
D7 Ent
BeitragVerfasst: Sa 23.10.04 12:34 
Hi,
so hab die Fehler im Code beseitigt.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function TeNa(tkurz: string): string;
var
  name: TIniFile;
begin
  name := TIniFile.Create('tena.ini');  
  try  
    TeNa := name.ReadString('Teams', tkurz, tkurz); //rückgabewert
  finally  
    name.Free  
  end;
end;


MfG,
MrCoder
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Sa 23.10.04 19:35 
- name ist ein reserviertes wort
- setze den Constructor in den Try/Finally Block ansonsten ist er zwecklos.
grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 23.10.04 19:57 
MSCH hat folgendes geschrieben:
- name ist ein reserviertes wort

Das ist mir neu ... Du meinst sicherlich Name wird in diesem Kontext bereits durch die Form vergeben. K, das wäre richtig, ABER Name ist KEIN reserviertes Wort.

MSCH hat folgendes geschrieben:
- setze den Constructor in den Try/Finally Block ansonsten ist er zwecklos.

Nein, auch falsch. tzzz Wo hast du blos programmieren gelernt :mrgreen:
Der Construktor kommt GENERELL vor den Try\Finally-Block, da dir sonst der Compiler (aus berechtigtem Grund) ne Warnmeldung ausspuckt, dass du das Objekt nicht initialisierst. Tritt im Konstruktor ein Fehler auf, sorgt der Construktor selbst für die Restlose Speicherfreigabe.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
shroty Threadstarter
Hält's aus hier
Beiträge: 10


D7 Pers
BeitragVerfasst: Sa 23.10.04 22:13 
vielen dank!
bis auf einen Punkt und das begin/end hats ja gestimmt! :)

ciao shroty
shroty Threadstarter
Hält's aus hier
Beiträge: 10


D7 Pers
BeitragVerfasst: So 24.10.04 13:35 
nur zur vollständigkeit: eine kleine sache muss noch geändert werden, sonst funktioiert es nicht!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function TeNa(tkurz: string): string;  
var  
  name: TIniFile;  
begin  
  name := TIniFile.Create('.\tena.ini');    
  try    
    TeNa := name.ReadString('Teams', tkurz, tkurz); //rückgabewert  
  finally    
    name.Free    
  end;  
end;


ohne .\ funktioniert es bei xml-files aber bei ini-files gehts nicht! auch komisch, aber ist so! mit funktionierts in beiden fällen!
Harry M.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754

Win 2000, XP
D2005
BeitragVerfasst: Fr 29.10.04 21:39 
hier mal nen beispiel wie ich ini's behandle

ausblenden volle Höhe 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:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
{  1:} unit Ini;
{  2:}
{  3:} interface
{  4:}
{  5:} uses
{  6:}   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
{  7:}   StdCtrls, Buttons, IniFiles;
{  8:}   
{  9:}   
{ 10:} 
{ 11:} type
{ 12:}   TForm1 = class(TForm)
{ 13:}     BitBtn1: TBitBtn;
{ 14:}     Label1: TLabel;
    Label2: TLabel;
{ 15:}     // 2. Prozeduren erstellen
{ 16:}     procedure FormDestroy(Sender: TObject);
{ 17:}     procedure FormCreate(Sender: TObject);
{ 18:}   private
{ 19:}     { Private-Deklarationen }
{ 20:}   public
{ 21:}     { Public-Deklarationen }
{ 22:}   end;
{ 23:} 
{ 24:} var
{ 25:}   Form1: TForm1;
{ 26:} 
{ 27:} implementation
{ 28:} 
{ 29:} {$R *.DFM}
{ 30:}
{ 31:} procedure TForm1.FormDestroy(Sender: TObject);
{ 32:} var
{ 33:}   // lokale Variable (Instanz, Variable eines Objekts)
{ 34:}   IniDat: TIniFile; // Initialisierungsdatei
{ 35:} begin
{ 36:}   // Datei öffnen oder erstellen
{ 37:}   IniDat := TIniFile.Create('.\Position.Ini');
{ 38:}   // In die Datei schreiben
{ 39:}   with IniDat do begin
{ 40:}     // Position schreiben
{ 41:}     WriteInteger('Position', 'Links', Left);
{ 42:}     WriteInteger('Position', 'Oben',  Top);
{ 43:}     // Größe schreiben
{ 44:}     WriteInteger('Position', 'Rechts', Width);
{ 45:}     WriteInteger('Position', 'Unten', Height);
{ 46:}   end; // with-end
{ 47:}   // Speicher wieder freigeben
{ 48:}   IniDat.Free;
{ 49:} end; // proc-end
{ 50:} 
{ 51:} procedure TForm1.FormCreate(Sender: TObject);
{ 52:} var
{ 53:}   IniDat: TIniFile;
{ 54:} begin
{ 55:}   // erstellt ein neues Objekt (eine Ini-Datei)
{ 56:}   IniDat := TIniFile.Create('.\Position.Ini');
{ 57:}   with IniDat do begin
{ 58:}     // Lädt die alte Position
{ 59:}     Left  := ReadInteger('Position','Links', Left);
{ 60:}     Top   := ReadInteger('Position','Oben',  Top);
{ 61:}     // Lädt die alte Größe
{ 62:}     Width := ReadInteger('Position','Rechts', Width);
{ 63:}     Height:= ReadInteger('Position','Unten', Height);
{ 64:}   end; // with-end
{ 65:}   // gibt Objekt wieder frei (und schließt Datei)
{ 66:}   IniDat.Free;
{ 67:} end;
{ 68:} 
{ 69:} end.