Entwickler-Ecke

Dateizugriff - *.txt auslesen???


Erzengel - Mo 12.01.04 14:00
Titel: *.txt auslesen???
Hallo,

Habe ein kleine Probelm in meinem Programm. Der User soll seinen Namen, Kürzel, USER-ID, Host und das Password in Edit felder eintragen und es abspeichern. Bei nächten start sollen sich aber die Felder mit den zuletzt eingetragenen Daten wieder füllen, ohne Button.

1. Wo kommt der Quelltext für das laden hin

2. Das habe ich bereit schon gemacht klappt aber nicht so ganz
Inhalt der txt-Datei

Quelltext
1:
2:
3:
4:
5:
Max Mustermann
mustermann
192.168.2.1
password
Benutzerkennung



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var i: integer; 
      s: TStringList;
begin
try
 s:= TStringList.Create;
 s.LoadFromFile('konto1.txt');
 for i:=1 to 5 do // für 5 die Anzahl der Edits nehmen
     (FindComponent('Edit' + IntToStr(i)) as TEdit).Text := s[i];
finally
 s.Free;
end;
end;


Hoffe das da eine schnelle Lösung zufinden ist. Danke im voraus.


Klabautermann - Mo 12.01.04 14:12

Hallo,

1. Ich würde das Form Create ereignis vorschlagen.

2. Was klappt denn nicht?

Gruß
Klabautermann


Erzengel - Mo 12.01.04 14:21

Lösung 1. angenommen

2. Läd es nicht rein. Krieg eine Fehlermeldung.

Der Index der Liste überschreitet das Maximum (5)


ShiKai - Mo 12.01.04 14:34

als tipp, du willst das passwort aber nicht plain-text in einer text-datei speichern, oder?

zu deinem "problem", du weißt schon, dass eine string-liste immer mit dem index 0 anfängt, und das letzte item an der Position Pred(Count) steht, oder?

bitte, vor dem fragenstellen immer erst die hilfe (in delphi einfach auf F1 klicken) zu rate ziehen...



wfg,
ShiKai


Erzengel - Mo 12.01.04 14:37

:D das password wird nachher noch verschlüßelt.
Komm aber imemr noch nicht dahinter warum es nicht geht. :oops:


Andi1982 - Mo 12.01.04 14:42

Hi,
mach bei deiner schleife mal:


Delphi-Quelltext
1:
for i:=0 to 4 do // für 5 die Anzahl der Edits nehmen                    


Vielleicht geht das ja!!


Erzengel - Mo 12.01.04 14:47

das funktioniert aber er schiebt die ganzen Zeilen dann höher.
und die erste Zeile Max Mustermann erscheit gar nicht


Andi1982 - Mo 12.01.04 14:58

Ja logisch, wahrscheinlich hast du kein edit-feld das Edit 0 heißt!! du müsstest dann folgendes tun:


Delphi-Quelltext
1:
2:
for i:=0 to 4 do // für 5 die Anzahl der Edits nehmen 
     (FindComponent('Edit' + IntToStr(i + 1)) as TEdit).Text := s[i];


das müsst gehen oder??


Erzengel - Mo 12.01.04 15:09

Habe die Lösung gefunden.
Problem war er konnte die erste reihe nicht lesen im txt.

beim speichern muße ich einfach  for i:=0 to 5 do einsetzen
und beim laden  for i:=0 to 5 do
danke für mitdenken


Klabautermann - Mo 12.01.04 15:22

Hallo,

generell solltest du es vermeiden mit festen (ober)grenzen zu Arbeiten. Wenn du bei einer Stringlisste alle Elemente bearbeiten willst, dann sollte das so aussehen:


Delphi-Quelltext
1:
FOR i := 0 TO MyStringList.Count - 1 DO                    


wenn du nur die ersten Elemente nutzt, dann solltest du wenigstens eine Sicherheitsabfrage vorher durchzuführen_

Delphi-Quelltext
1:
2:
IF MyStringList.Count > 4 THEN
  FOR i := 0 TO 4 DO


Gruß
Klabautermann


ShiKai - Mo 12.01.04 15:24

oh man...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var
  Index : Integer;  
  MaxIndex : Integer;
  StringList : TStringList; 
begin 
  StringList := TStringList.Create; 
  try 
    StringList.LoadFromFile(ExtractFilePath(Application.ExeName) + 'konto1.txt'); 

    if (StringList.Count >= 5then
      MaxIndex := 5
    else
      MaxIndex := StringList.Count;

    for Index := 1 to MaxIndex do
      TEdit(FindComponent('Edit' + IntToStr(Index))).Text := StringList[Pred(Index)]; 
  finally 
    StringList.Free; 
  end
end;


mehr nicht...

Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt


Erzengel - Mo 12.01.04 15:46

kukuk es geht schon. hab die lösung schon gefunden.
habe aber ein anders kleine problem gefunden.


Delphi-Quelltext
1:
FileName :='\\ibasserver\ELOProf\Global\Postbox\Hier soll das edtit erscheien\'+ Zeit + '_' + inttostr(counter) +'.tif';                    


Wie kann ich nur den Text von dem Edit feld in die obengenannte zeile bringen. im text des edit feld steht: vk (soll ein ordener name sein)
unddazu steht das editfeld in form2. aber der qulltext soll in form1 erscheien. :oops:
voll kein plan


Andi1982 - Mo 12.01.04 15:53

hmm, du musst oben in Form1 die form2 als uses eintragen oder wie das heißt, und dann ganz einfach:



Delphi-Quelltext
1:
FileName :='\\ibasserver\ELOProf\Global\Postbox\'+Form2.Edit2.Text+'\'+ Zeit + '_' + inttostr(counter) +'.tif';                    


Allerdings muss form2 bestehen zu dem zeitpunkt. Ansonsten machst du IN form 1 eine globale variable und usest die Fom1 in form2. und im onclose-Ereignis von form2 füllst du dann die globale variable in form1 mit dem inhalt des Editfeldes.

die übernimmst du dann so:


Delphi-Quelltext
1:
FileName :='\\ibasserver\ELOProf\Global\Postbox\'+GlobaleVariable+'\'+ Zeit + '_' + inttostr(counter) +'.tif';                    


Ich hoffe das war verständlich :-)


Erzengel - Mo 12.01.04 16:01

Danke das funktionier auch ohne des uses.

habe bei mir nur die hochkomme vergessen 8('')
hatte es nur mit den ++ gemacht aber danke


Klabautermann - Mo 12.01.04 17:08

Hi,
Erzengel hat folgendes geschrieben:
Danke das funktionier auch ohne des uses.

mit sicherheit nicht. Wahrscheinlich hat Delphi dir das nur schon netterweise eingetragen.

Aber weshalb ich eigentlich Posten wollte.

Mache bitte für neue Fragen auch ein neues Topic auf. Sonst wird das ganze zu unübersichtlich. Steht übrigens auch so in den Richtlinien ;).

Gruß
Klabautermann