Avatar billede hmann Nybegynder
06. oktober 2004 - 09:50 Der er 10 kommentarer og
1 løsning

indsæt x antal strings i grid

Hejsa,

der er lige gået en klap ned og jeg sidder og undres over noget som burde være ganske simpelt :)

jeg har en komma-separeret streng af ukendt længde.

jeg har så lavet en funktion som løber strengen igennem og piller hver sub-streng ud og derefter forkorter den oprindelige streng.

mit problem er så at alle disse substrenge, skal ind i et grid som er 8 (cols) x 23 (rows).

altså hvis jeg har strengen: 1001,1002,1003,1004 skal:
"1001" ind i grid.cells[0,0]
"1002" ind i grid.cells[0,1]

osv osv

er kommet op med et par - i mine egne øjne tåbelige - løsnigen..

hvordan vil i lave det smartest muligt?
Avatar billede stoney Nybegynder
06. oktober 2004 - 10:19 #1
procedure TForm1.Button1Click(Sender: TObject);
var
L : TStringList;
i : integer;
begin
L := TStringList.Create;
L.Delimiter := ',';
L.DelimitedText := '1001,1002,1003,1004';
begin
for i := 0 to l.Count - 1 do
stringgrid1.Cells[0,i] := l[i];
end;
L.Free;


end;

Stoney
Avatar billede thomashove Nybegynder
06. oktober 2004 - 10:26 #2
procedure TForm1.FormCreate(Sender: TObject);
var MyStringList    : TStringList;
var MyStringListRows : TStringList;
var i : integer;
begin
MyStringList:=TStringList.Create;
MyStringListRows:=TStringList.Create;

MyStringList.Add('1000,1001,1002,1003');
MyStringListRows.CommaText := MyStringList[0];
for i:=0 to (MyStringListRows.Count-1) do
  StringGrid1.Cells[1+i,1] := MyStringListRows[i];

MyStringList.Free;
MyStringListRows.Free;
end;
Avatar billede thomashove Nybegynder
06. oktober 2004 - 10:31 #3
Tricket for dig er nok at bruge TStringLists da de har indbyggede rutiner til at dele strenge :-)
Avatar billede hmann Nybegynder
06. oktober 2004 - 10:50 #4
det er også meget fint :)
kan godt finde ud af at lave en for løkke og smide dem i grid, men
mit grid er af fast størrelse 8 colc x 23 rows og det bliver hverken større eler mindre!
så jeg kan ikke bar blive ved med at smide tekst i cells[0,i]
den niende "substreng" skal jo i cells[1,0]
Avatar billede hmann Nybegynder
06. oktober 2004 - 10:51 #5
derfor ledte jeg lidt mere efter om grid'et havde noget hvor man bar kunne add'e data og så fandt den selv ud af at skifte row når der ikke er flere kolonner
Avatar billede thomashove Nybegynder
06. oktober 2004 - 11:19 #6
a´lá dette måske

procedure TForm1.FormCreate(Sender: TObject);
var MyStringList    : TStringList;
var MyStringListRows : TStringList;
var i : integer;
begin
MyStringList:=TStringList.Create;
MyStringListRows:=TStringList.Create;

MyStringList.Add('1000,1001,1002,1003,1004,1005,1006,1007');
MyStringList.Add('2000,2001,2002,2003,2004,2005,2006,2007');

for i:=0 to (MyStringList.Count-1) do
begin
  MyStringListRows.CommaText := MyStringList[i];
  StringGrid1.Rows[i] := MyStringListRows;
end;

MyStringList.Free;
MyStringListRows.Free;
end;
Avatar billede hmann Nybegynder
06. oktober 2004 - 11:26 #7
hehe ja...
men jeg har kun en streng '1000,1001,1002,1003,1004,1005,1006,1007,2000,2001,2002' osv

jeg har altså en lang streng som jeg på forhånd ikke kender længden af (kender ikke antal substrings)

er der noget jeg har misforstået?

eks:

streng = '01,07,09,14,56,67,68,69,74,75,77,84,85,88,91,97,98,99'

skal puttes i grid'et (8x23 cells) sådan:

|01|07|09|14|56|67|68|69|
|74|75|77|84|85|88|91|97|
|98|99|
Avatar billede thomashove Nybegynder
06. oktober 2004 - 11:49 #8
procedure TForm1.FormCreate(Sender: TObject);
var MyStringList    : TStringList;
var i,col,row : integer;
var myString  : string;
begin
MyStringList:=TStringList.Create;
myString := '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15';
MyStringList.Delimiter := ',';
MyStringList.DelimitedText := myString;
col := 0;
row := 0;
for i:=0 to (MyStringList.Count-1) do
begin
  StringGrid1.cells[col,row] := MyStringList[i];
  inc(col);
  if col = 7 then
    begin
    col:=0;
    inc(row);
    end;
end;
MyStringList.Free;
end;
Avatar billede hmann Nybegynder
06. oktober 2004 - 12:01 #9
ja jeg mente jo nok der måtte være en simpel måde at gøre det på...
takker..
- og så spørger jeg lige om col er 8 istedet for 7 da den jo lige er blevet talt om inden man spørger :)
Avatar billede hmann Nybegynder
06. oktober 2004 - 12:02 #10
talt op (ikke talt om)
Avatar billede thomashove Nybegynder
06. oktober 2004 - 12:36 #11
ups - ja den skal være 8.... ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester