Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeilenumbruch aus TStringList löschen (https://www.delphipraxis.net/162777-zeilenumbruch-aus-tstringlist-loeschen.html)

fanavity 5. Sep 2011 11:30

Delphi-Version: 5

Zeilenumbruch aus TStringList löschen
 
Hallo,

ich hatte eine Datei, die mit ; geteilt war. Also habe ich Sie gesplittet und in eine TSTringlist geladen. Nun stehen logischerweise alle Teilstrings untereinander.. Diese würde ich jetzt aber gerne in ein StringGrid laden.. Immer 3 Spalten pro Zeile..

Nur leider bekomme ich das nicht hin..

Das ist momentan mein Code
Delphi-Quellcode:
for i := 0 to NewList.Count -1 do begin

        StringGrid1.RowCount := StringGrid1.RowCount+1; //Immer eine Zeile hinzufügen
        //ListBox1.Items.Add(NewList.Strings[i]);
        StringGrid1.Cols[i].Add(NewList.Strings[i]); // Es werden nur die ersten 3 Strings angezeigt, danach kommt nichts mehr, da die ja in einem weg stehen.. Ich müsste also nach jedem 3. String eine Zeile weiter runter ;)

   end;
Ich hoffe das ist verständlich :) Ich will auch keine Lösungen von euch, sondern nur Hilfen.. Also wich ich das Problem lösen kann.. Verwendet wird Delphi 5 :)

M.f.G.

fanavity

DeddyH 5. Sep 2011 12:08

AW: Zeilenumbruch aus TStringList löschen
 
Anzahl der StringGrid-Zeilen = Anzahl der Listenelemente durch 3 (bei Rest eine mehr). Ob Du jetzt in eine neue Zeile musst, kannst Du mit MOD() einfach herausbekommen (wenn i mod 3 = 0, dann nächste Zeile).

fanavity 5. Sep 2011 12:19

AW: Zeilenumbruch aus TStringList löschen
 
Das verstehe ich nicht so ganz. Die Anzahl der benötigten Zeilen erstellt er mir schon richtig. Nur bekomme ich die Tstringlist die Momentan so aussieht:

1 X a
1 X b
1 X c
_
2 X a
2 X b
2 X c
_
3 X a
3 X b
3 X c

a,b,c sind jeweils die teilstrings.. eig ist es a,b,c,d,e,f,g,... Aber ich habe der logik halber schonmal gedanklich nach jedem 3. nen trennstrich eingefügt.. Der existiert in der TStringlist nocht nicht.
So bekomme ich es nicht hin!:(Das ist die gewünschte form^^)

1 a b c
2 a b c
3 a b c

Auch hier stellt 1,2,3 nur wieder die gedankliche einteilung der Datensätze dar :)

M.f.G.
fanavity

Edit:
Delphi-Quellcode:
for i := 0 to NewList.Count -1 do begin

        StringGrid1.RowCount := StringGrid1.RowCount+1; //Immer eine Zeile hinzufügen
        //ListBox1.Items.Add(NewList.Strings[i]);
        StringGrid1.Cols[i].Add(NewList.Strings[i]); // Es werden nur die ersten 3 Strings angezeigt, danach kommt nichts mehr, da die ja in einem weg stehen.. Ich müsste also nach jedem 3. String eine Zeile weiter runter ;)

   end;
Wenn ich wie hier StringGrid1.Cols nehme, dann schreibt er mir die ersten 3 richtig auf.. (also eine Zeile) Dann zeigt er aber nichts mehr, da ich mein Grid auf 3 Zeilen begrenzt habe.. Ich müsste also Quasi nach jedem 3. STring aus der Tstringlist ne neue Zeile haben..

Wenn ich STringGRid1.Rows nehme, schreibt er mir sie untereinader weg, in die erste Spalte!

DeddyH 5. Sep 2011 12:33

AW: Zeilenumbruch aus TStringList löschen
 
Nun muss ich doch nochmal nachfragen. Angenommen, Deine Stringliste sieht so aus:
Code:
01
02
03
04
05
06
07
08
09
10
usw.
Dann möchtest Du es so im StringGrid haben, richtig?
Code:
01 | 02 | 03
------------
04 | 05 | 06
------------
07 | 08 | 09
------------
10 |

fanavity 5. Sep 2011 12:35

AW: Zeilenumbruch aus TStringList löschen
 
Genau richtig, dass ist mein Problem ;)

Vielleicht ein wenig umständlich erklärt ;)

DeddyH 5. Sep 2011 12:52

AW: Zeilenumbruch aus TStringList löschen
 
Also wie gesagt: der erste String in Deiner Liste hat ja den Index 0, der zweite den Index 1 usw. Deine Laufvariable i entspricht ja dann diesem Index, so wie es in Deinem Code steht. Ist diese also restlos durch 3 teilbar, dann muss es eine neue Zeile werden.

fanavity 5. Sep 2011 12:54

AW: Zeilenumbruch aus TStringList löschen
 
Ja das weiß ich ja.. Nur wie sage ich dem Programm:" Hey, geh mal in eine neue Zeile! ;)?"

DeddyH 5. Sep 2011 12:56

AW: Zeilenumbruch aus TStringList löschen
 
Indem Du auf StringGrid.Cells zugreifst, da kannst Du Zeile und Spalte der aktuellen Zelle angeben.

fanavity 5. Sep 2011 13:01

AW: Zeilenumbruch aus TStringList löschen
 
Das weiß ich auch, nur irgendwie stehe ich auf dem Schlauch. Ist mein Lösungsansatz von oben denn richtig oder muss ich den kommplett umbauen?

wenn ich es mit StringGrid1.Cells[x,y] versuche, bekomme ich immer eine Diagonale ^^

Wie gesagt, ich stehe auf dem Schlauch :/

DeddyH 5. Sep 2011 13:12

AW: Zeilenumbruch aus TStringList löschen
 
Ungetestet:
Delphi-Quellcode:
procedure FillGridFromStringlist(List: TStrings; Grid: TStringGrid; ColsPerRow: integer);
var
  i, Zeile, Spalte: integer;
begin
  if not Assigned(List) or not Assigned(Grid) then
    raise Exception.Create('Liste und Grid müssen vorhanden sein.');
  Grid.RowCount := Grid.FixedRows + List.Count div ColsPerRow;
  if List.Count mod ColsPerRow > 0 then
    Grid.RowCount := Grid.RowCount + 1;
  for i := 0 to List.Count - 1 do
    begin
      Zeile := Grid.FixedRows + i div ColsPerRow;
      Spalte := Grid.FixedCols + i mod ColsPerRow;
      Grid.Cells[Spalte, Zeile] := List[i];
    end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr.
Seite 1 von 2  1 2      

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