AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

.txt von einem ftp server auslesen

Ein Thema von 5etH · begonnen am 3. Apr 2008 · letzter Beitrag vom 4. Apr 2008
Antwort Antwort
Seite 2 von 3     12 3      
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: .txt von einem ftp server auslesen

  Alt 3. Apr 2008, 14:24
Wie schaut denn Deine Datei aus?
Ist es ein csv Text?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#12

Re: .txt von einem ftp server auslesen

  Alt 3. Apr 2008, 15:04
das ist eine datei in der die datensätze sequentiell abgespeichert werden

Beispiel:
6 <- colcount
3 <- rowcount
KundenNr
1
2
Name
müller
fischer
Vorname
peter
hans
Email
test1@test.de
test2@test.de
Key
5673325273-7456766323-7433227665
5437767477-3652344723-5633225447
Regestriert
0
0
Manuel
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: .txt von einem ftp server auslesen

  Alt 3. Apr 2008, 15:29
Code:
6 <- colcount
3 <- rowcount
KundenNr


Name
müller
fischer
Vorname
peter
hans
Email
[email]test1@test.de[/email]
[email]test2@test.de[/email]
Key
5673325273-7456766323-7433227665 
5437767477-3652344723-5633225447 
Regestriert

0
Ich würde vorschlagen die Datei etwas anders zu gestalten:
1. Zeile KundenNr;Name;Vorname;Email;Key;Registriert
2. Zeile 1;müller;peter;test1@test.de;56...;0
...

Dann fällt die Sache mit dem Einlesen deutlich leichter:


Ein StringGrid In ein csv Format zu speichern geht so:
Delphi-Quellcode:
var
  csv : TStringList;
begin
  csv := TstringList.create;
  csv.Delimiter:=';';
  for i:=0 to StringGrid1.RowCount -1 do
    begin
      StringGrid1.Rows[i].Delimiter:=';';
      csv.Add(StringReplace(StringGrid1.Rows[i].CommaText,',',';',[rfReplaceAll]));
    end;
  csv.SaveToFile(<FileName>);
  csv.Free;
end;
Ein Import sollte so gehen:

Delphi-Quellcode:
var
  csv : TStringList;
begin
  csv := TStringList.create;
  csv.loadfromStream(DB);
  stringGrid1.rowCount := sl.count;
  
  for i:=0 to sl.count -1 do
    begin
      StringGrid1.Rows[i].Delimiter:=';';
      StringGrid1.Rows[i].Commatext:=sl[i];
    end;
  csv.free;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#14

Re: .txt von einem ftp server auslesen

  Alt 3. Apr 2008, 15:48
das funktioniert an sich schonmal... Danke.... nur habe ich das Problem das ich es auf zwei arten laden und speichern muss.
einmal in einem Stream damit die kunden nicht rankommen. zum administrieren der Accounts arbeiten wir mit der selben DB, die aber teils Lokal gepsiechert werden muss.

sprich ich bräuchte dann auch eine procedure um das lokal speichern und laden zu können.

du musst sie nicht für mich schreiben, aber kann ja sein du hast schon eine ...


asl omein lokaler ladeaufruf sieht jetzt so aus aber er meckert noch mit dem count

Delphi-Quellcode:
procedure loadgrid(StringGrid: TStringGrid; const FileName: TFileName);
var
  csv : TStringList;
  i : Integer;
begin
  csv := TStringList.create;
  csv.loadfromfile('c:\DB\DB.txt');
  stringGrid.rowCount := csv.count;
  for i:=0 to csv.count -1 do
    begin
    StringGrid.Rows[i].Delimiter:=';';
    StringGrid.Rows[i].Commatext:=csv[i];
    csv.free;
    end;
end;
Manuel
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#15

Re: .txt von einem ftp server auslesen

  Alt 3. Apr 2008, 15:58
Hä? Wie du speicherst und lädst hat doch Klaus gezeigt?

Und außerdem: Wie wäre es, wenn du mal eine richtige (Embedded-)Datenbank benutzt, statt solche selbstgebastelten Text-Dateien "DB" zu nennen und in einem Atemzug auch noch von "Sicherheit" zu sprechen?

[edit]
stringGrid.rowCount := tstringlist.count;//Auf

Hirn einschalten?

Du definierst "csv" als TStringList, erzeugst es auch so, lädst die Datei auch so ... aber dann willste aufeinmal von der Klassendeklaration auf .Count zugreifen ... Allet klar.
[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#16

Re: .txt von einem ftp server auslesen

  Alt 3. Apr 2008, 16:06
das mit dem csv ist mir eben auch aufgefallen ^^ ich seh die letzten tage nur delphicode ^^ kann verwirren

zum andern sie ist noch in der testphase und heist nur db weils sich schneller schreiben lässt....

an klasu nochmal vielen dank problem ist gelöst und es funktioniert alles
Manuel
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#17

Re: .txt von einem ftp server auslesen

  Alt 3. Apr 2008, 16:47
so nochmal zum eigentlich stream in stringgrid lesen ...

mein aufruf sieht so aus
Delphi-Quellcode:
var
    DB : TMemoryStream;
    csv : TStringList;
    i : Integer;
begin

  DB := TMemoryStream.create;

  datenmodul1.idftp1.Username := 'proguser';
  datenmodul1.idftp1.Password := 'manuel13';
  datenmodul1.idftp1.Host := '10.15.121.106';
  datenmodul1.idftp1.Connect;
  datenmodul1.IdFTP1.ChangeDir('/Kunden/');
  datenmodul1.idftp1.Get('/Kunden/DB2.txt', DB);
    
    csv := TStringList.create;
    csv.loadfromStream(DB);
    stringGrid1.rowCount := csv.count;

  for i:=0 to csv.count -1 do
    begin
      StringGrid1.Rows[i].Delimiter:=';';
      StringGrid1.Rows[i].Commatext:=csv[i];
    end;
  csv.free;
doch leider lädt er die Datensätze nicht in das Grid ein es bleibt leer... er verändert etwas, (Die fixed Cols verschwinden der fixed Row bleibt) aber es wird kein text eingefügt die quelldatei ist aber richtig

[EDIT] Beim lokalen speicher geht alles klar nur wenn ich lokal laden will sagt er mir das: Listenindex überschreitet das Maximum (1)

wie kann ich das beheben und hängt es vill mit dem oben genannten zusammen ?
Manuel
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#18

Re: .txt von einem ftp server auslesen

  Alt 3. Apr 2008, 17:18
Kann es sein, dass Dein Stream leer ist?
Delphi-Quellcode:
datenmodul1.IdFTP1.ChangeDir('/Kunden/');
datenmodul1.idftp1.Get('/Kunden/DB2.txt', DB);
Oder setze mal nachdem der Stream geladen wurde die Position des Streams auf 0.
DB.position:=0; Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#19

Re: .txt von einem ftp server auslesen

  Alt 3. Apr 2008, 17:21
also das zurücksetzten ist sinnlos und ich denke nicht das DB leer ist da er sich ja die datei zieht und auch im debugger kein "()" angezeigt wird ...
Manuel
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#20

Re: .txt von einem ftp server auslesen

  Alt 3. Apr 2008, 21:33
Delphi-Quellcode:
var
  kundenStream : TMemoryStream;
  csv : TStringList;
  i: Byte;
begin
  edit1.Text:= idftp1.Version;
  kundenStream := TMemoryStream.Create;
  idftp1.Host:='192.168.189.128';
  idftp1.Username:='...';
  idftp1.Password:='...';

  idftp1.Connect();
  idftp1.Get('kunden.csv',kundenStream);
  idftp1.Disconnect;
  csv := TStringList.create;
  kundenStream.Position:=0;
  csv.loadfromStream(kundenStream);
  stringGrid1.rowCount := csv.count;

  for i:=0 to csv.count -1 do
    begin
      StringGrid1.Rows[i].Delimiter:=',';
      StringGrid1.Rows[i].Commatext:=csv[i];
    end;
  csv.free;
  kundenStream.Free;
So, der obige Code funktioniert bei mir.
Wenn der Stream nicht auf die Position 0 gesetzt wird,
gibt es eine ListIndex out of bounds Fehlermeldung.

Was ich weiter noch festgestellt habe, ist dass
wenn die Datensätze mit ; getrennt und aus dem Stream gelesen werden
sind diese nicht richtig in das StringGrid eingelesen worden.
Es stehen alle Daten in Spalte 0 des StringGrids.

Werden die Datensätze mit , getrennt
werden sie auch richtig in das StringGrid aufgenommen.

Ich habe mit diesen Datensätzen getestet:
Code:
KundenNr,Name,Vorname,Email
1,Beck,Rufus,test1@123.com
2,Maier,Dieter,test2@456.net
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz