DelimitedText



  • Hi,

    ich habe ein kleines Problem mit meinem Delimiter.

    TStringList *list = new TStringList();
      list -> Delimiter = ';';
      list -> LoadFromFile("U:\\quelle2.csv");
      for (int y = 0; y < list->Count; y++)
      {
        sgrid_Tabelle->Rows[y]-> DelimitedText = list -> Strings[y];
      }
      delete list;
    

    Der Delimiter ist auf

    ;
    

    gesetzt, jedoch wird in dem StringGrid (sgrid_Tabelle) nur nach Komma zerteilt und angezeigt. Woran kann dies liegen?

    Öffne ich eine Datei, die durch Komma getrennt ist, klappt alles, nur dass bei Zahlen (z.B. 3,25) das Komma durch einen Punkt ersetzt ist, was mich auch nicht weiter bringt!

    Bin für jede Hilfe sehr dankbar!



  • Du hast den Delimiter im falschen Objekt gesetzt. Der String wird in der Zeile des StringGrids zerlegt, nicht in 'list'.



  • Danke für die schnelle Antwort, doch leider bin ich noch ein Anfänger in Sachen C++ .... Kann mir jemand noch den korrekten Quelltext posten?

    Danke im Voraus, auch wenn ich euch sicherlich langweile 😉



  • tschli3107 schrieb:

    Danke für die schnelle Antwort, doch leider bin ich noch ein Anfänger in Sachen C++ .... Kann mir jemand noch den korrekten Quelltext posten?

    Seit wann ist der Status "Anfänger" ein Freibrief das Denken zu unterlassen? Lies doch einfach nochmals PABs Nachricht durch und korrigiere entsprechend.

    -junix



  • Überleg mal: Wenn du einer Tabellenzeile (sgrid_Tabelle->Rows[y]) einen String mit Trennzeichen (DelimitedText) gibst, woher soll die Zeile wissen, bei welchem Trennzeichen (Delimiter) sie den String auseinandernehmen soll?



  • soll heißen: du musst dem StringGrid einen Delimiter zuweisen, so wie du es bei der StringList gemacht hast.



  • Nicht dem StringGrid, sondern der jeweiligen Row.



  • PAB schrieb:

    Überleg mal: Wenn du einer Tabellenzeile (sgrid_Tabelle->Rows[y]) einen String mit Trennzeichen (DelimitedText) gibst, woher soll die Zeile wissen, bei welchem Trennzeichen (Delimiter) sie den String auseinandernehmen soll?

    ok, soweit kann ich folgen, doch bei der Umsetzung zum Quelltext hängt es noch bei mir ....

    😕



  • Was hast du denn bis jetzt versucht?



  • ja, ok: ich habe zwischendurch 8 stunden geschlafen und 2 mahlzeiten zu mir genommen, aber sonst nur probiert und getestet ...



  • Meine Frage

    junix schrieb:

    Was hast du denn bis jetzt versucht?

    War eigentlich als Anregung gedacht, dass du Zeigen sollst, WAS du versucht hast und nicht geklappt hat.

    -junix



  • z.B. die Hilfe zu RowDelimiter, wobei ich davon nix verstehe:
    <<
    Die Eigenschaft definiert den Zeilenbegrenzer für die Eingabedatei.

    property RowDelimiter: String;

    Beschreibung

    Mit RowDelimiter wird der Zeilenbegrenzer (Tab-Ctrl-F oder |~) für die Eingabedatei festgelegt.

    Doch wie bindet man den RowDelimiter ein? Wo und wie wird er definiert? 😕
    Es gibt auch keine Beispiel in der Borland Hilfe ...



  • Wie greifst du denn sonst auf Properties zu?

    -junix



  • keine ahnung ....



  • Wie bist du denn z.B. auf das gekommen?

    list -> Delimiter = ';';
    

    Wie greifst du auf Klassenmember zu?

    -junix

    EDIT: Bzw. Was steht in der BCB-Hilfe zum Thema TStringList::Delimiter?



  • Das Beipspiel mit dem Delimiter stand so im Forum.

    Bei

    TStringList *list = new TStringList();
        list -> Delimiter = ';';
        list -> RowDelimited = ';';
    

    kommt die Fehlermeldung:
    -> [C++ Fehler] Unit1.cpp(38): E2316 'RowDelimited' ist kein Element von 'TStringList'
    -> [C++ Fehler] Unit1.cpp(44): E2316 'RowDelimited' ist kein Element von 'TStrings'

    Ich bin an Ende ... wie gesagt, bin ein totaler Neuling auf dem Gebiet!



  • Und weils so im Forum stand, übernimmt man das einfahc mal ohne sich darum zu kümmern was genau das überhaupt soll?

    Mach dich hald mal schlau was über die StringList in der HIlfe steht. Shcau dir mal Eigenschaften und Methoden an. Anschliessend schauste mal was so alles in der Hilfe unter TStringGrid steht....

    -junix



  • Was ist eigentlich das Ziel deines Projektes?
    Vielleicht kannst du es ja auch anders erreichen?



  • Ich soll eine csv - Datei auslesen und die Daten in einer Tabelle (StringGrid) darstellen. Später sollen spezielle Daten Selektiert werden und in eine neue Datei geschrieben werden. Dazu ist es nützlich, die Daten in ein 2 dimensionales array zu speichern.

    Leider bin ich heut nicht wirklich viel weiter gekommen, bin für jede Hilfe sehr dankbar bzgl. Delimiter!

    Bis morgen in alter Frische ....



  • Hab mal noch ne Frage:
    Ich erhalte die FM:
    'RowDelimiter' ist kein Element von 'TStringGrid'

    Wozu gehört RowDelimiter dann? In der Hilfe steht was von 'TIBInputDelimitedFile.RowDelimiter', damit kann ich aber nichts anfangen.

    Bräuchte dringend eine Lösung für das Problem!
    Danke ...


Anmelden zum Antworten