Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probleme bei CSV zu StringGrid (https://www.delphipraxis.net/133150-probleme-bei-csv-zu-stringgrid.html)

BasicX 26. Apr 2009 23:32


Probleme bei CSV zu StringGrid
 
Moin,
Ich habe folgende Prozedur gebastelt und bin (nach langem Versuchen) auf folgende Lösung gekommen:

Code:
procedure TForm9.Timer1Timer(Sender: TObject);
Var
  I,A : Integer;
  fields: Array of Array of String;
  fieldsTemp: TStringList;
begin
  Memo1.Lines.LoadFromFile(--irgend eine CSV-);
  if Memo1.Lines.Count > 0 then
  begin
    for I := 0 to Memo1.Lines.Count - 1 do
    begin
      fieldsTemp := TStringList.Create;
      fieldsTemp := Split(Memo1.Lines.Strings[I],';');
      Stringgrid1.RowCount := Memo1.Lines.Count+1;
      StringGrid1.ColCount := fieldsTemp.Count;
      SetLength(fields,Memo1.Lines.Count-1);
      for A := 0 to fieldsTemp.Count - 1 do
      begin
        if Memo1.Lines.Count < 1 then
        begin
//        Application.MessageBox(Pchar(inttostr(Memo1.Lines.Count)),'Wert');
          SetLength(fields[I],Memo1.Lines.Count+1);
//        SetLength(fields[I],Memo1.Lines.Count);
          fields[I,A] := fieldsTemp.Strings[A];
          StringGrid1.Cells[A,I+1] := fields[I,A];
        end;
      end;
    end;
  End;
end;
Nur kommt beim 2. oder 3. Durchlauf eine Zugriffsverletzung(ohne veränderung des CSV inhaltes), und ich habe keinen Schimmer, woher die kommen kann...
Ich hab heute irgendwie voll die Denkblokade :wiejetzt:

Gruß Christian

Mithrandir 26. Apr 2009 23:36

Re: Probleme bei CSV zu StringGrid
 
Hat das einen besonderen Grund, dass du jedesmal die Länge von fields, obwohl sie durch count schon feststeht, neu setzt? Außerdem meine ich, dass das bei dynamischen mehrdimensionalen Arrays irgendwas zu beachten gab... nur was war das noch? :gruebel:

BasicX 26. Apr 2009 23:55

Re: Probleme bei CSV zu StringGrid
 
Ok, das mit der Denkblockade hat bestätigt ;)
ich hatte gleich 2 Fehler eingebaut:

Code:
      for A := 0 to fieldsTemp.Count -1 do
      begin
        if Memo1.Lines.Count > 1 then // <== größer ist doch besser als kleiner
        begin
und
Code:
SetLength(fields,fieldsTemp.Count); //dann auch noch verdrehte Setlength
naja, jetzt funktioniert es erstmal

jaenicke 27. Apr 2009 01:47

Re: Probleme bei CSV zu StringGrid
 
Hallo, was hast du denn gegen die im Forum vorgestellten fertigen Lösungen? ;-)
http://www.delphipraxis.net/internal...t.php?p=203688
http://www.delphipraxis.net/internal...t.php?t=130402

Was du bei dir nämlich nicht beachtet hast ist, wenn z.B. ; in den Einzelstrings vorkommen und der String mit Anführungszeichen abgegrenzt ist:
Code:
Ein String;"Noch ein String mit ; drin";Noch ein weiterer String
;-)

nahpets 27. Apr 2009 13:13

Re: Probleme bei CSV zu StringGrid
 
Hallo,

wo gibst Du die
Delphi-Quellcode:
fieldsTemp := TStringList.Create;
frei?
Musst Du das wirklich pro Zeile machen, reicht nicht einmalig?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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