.txt Datei in einen Stringgrid einfügen??

Für Fragen von Einsteigern und Programmieranfängern...
Foxi1896
Beiträge: 87
Registriert: Mo 10. Jun 2013, 09:06

Re: .txt Datei in einen Stringgrid einfügen??

Beitrag von Foxi1896 »

ok, wie bekomme ich die procedure ladedatei hin?
Ich habe es bisher immer versucht reinzukopieren. Aber das scheint ja Falsch zu sein.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: .txt Datei in einen Stringgrid einfügen??

Beitrag von Michl »

Einfach die Procedure mittels Copy & Paste von Soner nehmen und in deine Unit kopieren. Aufpassen musst du nur, dass du sie vor deinem ersten Aufruf schreibst also, dass sie vor deinem "procedure TForm1.MenuItem5Click(Sender: TObject);" steht! Ansonsten müsste sie zuvor deklariert werden, da der Compiler sie sonst nicht findet!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Foxi1896
Beiträge: 87
Registriert: Mo 10. Jun 2013, 09:06

Re: .txt Datei in einen Stringgrid einfügen??

Beitrag von Foxi1896 »

Ah, ok daran lag es Danke.

Aber nun hab ich immer noch das Problem das alles in der ersten Spalte eingefügt wird.
http://abload.de/image.php?img=1wbke2.png

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: .txt Datei in einen Stringgrid einfügen??

Beitrag von Michl »

Ich habe jetzt den Code von Soner im einzelnen nicht geprüft bzw. die Procedure getestet, meine Vermutung wäre allerdings, daß du einen anderen Seperator genommen hast als er. Diesen müsstest du auf deinen anspassen, sonst findet der Compiler keinen und behandelt den Text als nur einen String!

Code: Alles auswählen

       case aLine[i] of
         ' ': begin //Trennzeichen (Leerzeichen) erreicht Wert zum Grid - !!! hier müsstest du deinen Seperator einfügen !!!
             if c>=AGrid.ColCount then  AGrid.ColCount:=c+1;
             AGrid.Cells[c,r]:=aWort;
             aWort:='';
             Inc(c);
          end;
        else aWort:=aWort+aLine[i];

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Foxi1896
Beiträge: 87
Registriert: Mo 10. Jun 2013, 09:06

Re: .txt Datei in einen Stringgrid einfügen??

Beitrag von Foxi1896 »

ojeoje, was ist ein Seperator?

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: .txt Datei in einen Stringgrid einfügen??

Beitrag von Michl »

Sorry falsche Rechtschreibung! Heisst nicht Seperator sondern Separator!

Das ist der, wo du erkennst, wann eine Zahl aufhört und die nächste anfängt!

Also in deinem Textfile steht:
1 3 4
1,4 3,2 5
2,1 33 44

Damit der Compiler weiss, dass 1 und 3 zwei Zahlen sind und nicht 13, steht dazwischen ein Leerzeichen, also ist in diesem Fall der Separator ein Leerzeichen, also ' '!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2816
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: .txt Datei in einen Stringgrid einfügen??

Beitrag von m.fuchs »

Michl hat geschrieben:Damit der Compiler weiss, dass 1 und 3 zwei Zahlen sind und nicht 13, steht dazwischen ein Leerzeichen, also ist in diesem Fall der Separator ein Leerzeichen, also ' '!
Das weiß man nicht so genau, was im ersten Beitrag wie ein Leerzeichen aussieht...

1 2 3 4
5 6 7 8

... könnte auch ein Tab sein:

Code: Alles auswählen

1	2	3	4
5	6	7	8
Da muss Foxi1896 noch einmal nachsehen in seiner Datei, was da nun wirklich zwischen den einzelnen Werten steht.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Soner
Beiträge: 726
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: .txt Datei in einen Stringgrid einfügen??

Beitrag von Soner »

Dann füge alle als Separator in Frage kommende Zeichen hinzu dann funktionert es mit allen möglichen Separatorformen:

Code: Alles auswählen

       case aLine[i] of
         ' ',';',#9: begin //Trennzeichen (Leerzeichen, semikola,tabulator) erreicht Wert zum Grid
             if c>=AGrid.ColCount then  AGrid.ColCount:=c+1;
             AGrid.Cells[c,r]:=aWort;
             aWort:='';
             Inc(c);
          end;
        else aWort:=aWort+aLine[i];
Viel wichtiger ist, ich würde in deiner Stelle ein bißchen Grundlagen von Pascal lernen.

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: .txt Datei in einen Stringgrid einfügen??

Beitrag von Komoluna »

Ich hab ein ähnliches Problem,
gibt es eine möglichkeit den Inhalt von einer TStringGrid aus einer Resource Datei zu laden?
Ich finde beim TStringGrid nur den Befehl [...].LoadfromFile(...) aber nicht [...].LoadFormResource(...) oder [...].LoadFromStream(...) wie beim TStringList
auf das TXMLConfig, was in LoadFromFile benutzt wird besitzt keinen LoadfromResource oder LoadFromStream befehl...

Edit: Ich hatte vor, den Inhalt der StringGrid aus dem Internet herunterzuladen, aber ohne ihn in irgendwelchen Appdata oder Userdata Ordner Temporär abzuspeichern

Danke schonmal im Voraus

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Antworten