[gelöst] TStringGrid.LoadFromCSVFile Tab-Delimiter

Rund um die LCL und andere Komponenten
Antworten
Theozh
Beiträge: 99
Registriert: So 1. Jul 2012, 10:56

[gelöst] TStringGrid.LoadFromCSVFile Tab-Delimiter

Beitrag von Theozh »

Hallo,
kann mir jemand erklären warum mit

Code: Alles auswählen

StringGrid1.LoadFromCSVFile('Test.txt',#9,true);
die Textdatei auch an Stellen, wo ein Leerzeichen (' ' bzw. #32) enthalten ist, in die StringGrid-Zellen aufgespaltet wird?
Wie kann man eine Trennung erreichen ausschliesslich dort wo ein Tab (#9) vorhanden ist?
Zuletzt geändert von Theozh am Mo 28. Jul 2014, 12:38, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10921
Registriert: Mo 11. Sep 2006, 19:01

Re: TStringGrid.LoadFromCSVFile Tab-Delimiter

Beitrag von theo »

Ich kann deinen Befund nicht bestätigen.

Lazarus 1.3 r45860M FPC 2.7.1 x86_64-linux-gtk 2

Theozh
Beiträge: 99
Registriert: So 1. Jul 2012, 10:56

Re: TStringGrid.LoadFromCSVFile Tab-Delimiter

Beitrag von Theozh »

Sorry, bevor ich frage, sollte ich schauen, dass ich auf der neuesten Version bin.
Hatte Lazarus 1.08 FPC 2.6.2 win32
nun habe ich Lazarus 1.24 FPC 2.6.4 win32
Jetzt tut's... da hat sich offenbar etwas geändert...
Danke!

Theozh
Beiträge: 99
Registriert: So 1. Jul 2012, 10:56

Re: [gelöst] TStringGrid.LoadFromCSVFile Tab-Delimiter

Beitrag von Theozh »

...erlaubt noch eine Anmerkung zur Prozedur LoadFromCSVFile:

a)
Leerzeilen im original Textfile werden beim Import offenbar herausgelöscht.
Das mag in manchen Fällen erwünscht sein. Im meinem konkreten Fall nicht.

b)
Die Anzahl der Spalten wird offenbar anhand der ersten nicht-leeren Zeile bestimmt.
Wenn spätere Zeilen mehr Spalten haben sollten, werden die einfach weggelassen.
In meinem konkreten Fall ist das auch nicht wünschenswert.

So werde ich mein StringGrid-Import-Routinen-"Rad" selbst "erfinden" müssen, es sei denn da gäb's was anderes Schlaues...

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: [gelöst] TStringGrid.LoadFromCSVFile Tab-Delimiter

Beitrag von Antrepolit »

Theozh hat geschrieben:...erlaubt noch eine Anmerkung zur Prozedur LoadFromCSVFile:

a)
Leerzeilen im original Textfile werden beim Import offenbar herausgelöscht.
Das mag in manchen Fällen erwünscht sein. Im meinem konkreten Fall nicht.

b)
Die Anzahl der Spalten wird offenbar anhand der ersten nicht-leeren Zeile bestimmt.
Wenn spätere Zeilen mehr Spalten haben sollten, werden die einfach weggelassen.
In meinem konkreten Fall ist das auch nicht wünschenswert.

So werde ich mein StringGrid-Import-Routinen-"Rad" selbst "erfinden" müssen, es sei denn da gäb's was anderes Schlaues...
Zu a) Deshalb sind Tabs keine gute Idee als Trennzeichen, denn CSV steht ja auch für Comma Separated Value, also sollte man das Komma verwenden, denn Tab ist obendrein ein Whitespace(!) und solche zählen eben als leere Zeile, da sie nicht sichtbar sind

Zu b) In solchen Fällen sollte man Spaltenüberschriften verwenden.
Grüße, Antrepolit

care only if your os is really burning

wp_xyz
Beiträge: 5191
Registriert: Fr 8. Apr 2011, 09:01

Re: [gelöst] TStringGrid.LoadFromCSVFile Tab-Delimiter

Beitrag von wp_xyz »

Seltsames Posting. Kathi, bist du sicher, dass du den richtigen Thread erwischt hast?

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

Re: [gelöst] TStringGrid.LoadFromCSVFile Tab-Delimiter

Beitrag von Michl »

Code: Alles auswählen

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

wp_xyz
Beiträge: 5191
Registriert: Fr 8. Apr 2011, 09:01

Re: [gelöst] TStringGrid.LoadFromCSVFile Tab-Delimiter

Beitrag von wp_xyz »

Du antwortest einem Bot
Ist mir glaub ich schon mal passiert. Welche Konsequenzen hat das?

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

Re: [gelöst] TStringGrid.LoadFromCSVFile Tab-Delimiter

Beitrag von Michl »

Für unsereins, soviel ich weiss, keine gravierenden.

Es gibt Bots, die Spam platzieren, werden sie entlarvt, sollten sie von den Administartoren gesperrt werden. Dafür kann man den entsprechenden Beitrag ja auch melden (kleiner dreieckiger Button, neben den "Zitieren"-Button).

Manche Bots (oder menschliche Spamer) versuchen zuerst menschlich (oder als echtes Forenmitglied) zu wirken, je mehr Einträge in einem Forum, desto glaubhafter ist, dass eine echte Person dahinter steht. Desto wahrscheinlicher ist es dann auch, dass wenn dann der Spam-Link gesetzt wird, dieser von anderen Nutzern geklickt wird.

Manche Boteinträge setzen auch unsichtbare Links (z.B. ein verlinkter Punkt), um bei Suchmachinenrankings nach oben zu rutschen. Siehe http://de.wikipedia.org/wiki/PageRank

Es gibt auch harmlose Bots, die in Foren testen, wie menschlich sie wirken (siehe http://de.wikipedia.org/wiki/Turing-Test) oder aufzeigen, dass sie Captchas knaggen können etc.

PS: bei auffälligen Posts kopiere ich mir einfach mal einen Teil des Textes und google den mal.

Code: Alles auswählen

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

Antworten