Avatar billede bramsing Nybegynder
17. oktober 2005 - 11:27 Der er 9 kommentarer og
1 løsning

Delimiter - DelimitedText - semikolon/komma/mellemrum

Hejsa..

Jeg har følgende kode der driller mig lidt:

sl := Tstringlist.Create;
sl.LoadFromFile(edit1.Text);
for i := 0 to sl.Count -1 do
  begin
  L := TStringList.Create;
  L.Delimiter := ';';
  L.DelimitedText := sl[i];
  memo3.Lines.add(L[0]);
  L.Free;
  end;
sl.Free;


Foruden at den skiller kolonerne ved ; (semikolon) som den skal, gør den det også efter et mellemrum og efter et , (komma)...

Er der en måde at forhindre at den skiller kolonerne ved et mellemrum og komma ??
Avatar billede martinlind Nybegynder
17. oktober 2005 - 11:35 #1
Du smider det jo også ind line for line skulle du ikke  bare gøre sådan

L.DelimitedText := sl.Text;

Så mener jeg godt den kan finde ud af det
Avatar billede bramsing Nybegynder
17. oktober 2005 - 11:40 #2
martinlind >> Når jeg ændre det til det du foreslår så tager den kun første linie og gentager så længe den "counter"
Avatar billede martinlind Nybegynder
17. oktober 2005 - 11:51 #3
Ja, det var lige principet, jeg beskrev. Prøv sådan :

sl := Tstringlist.Create;
sl.LoadFromFile(edit1.Text);
L := TStringList.Create;
L.Delimiter := ';';
L.DelimitedText := sl.text;
memo3.Lines.Text := L.Text;
L.Free;
sl.Free;

Det burde være det samme :) som din løkke
Avatar billede martinlind Nybegynder
17. oktober 2005 - 11:52 #4
Kunne godt gøres direkte på Memo3.lines objectet, men pyt med det
Avatar billede bramsing Nybegynder
17. oktober 2005 - 12:01 #5
øøhhh... Nu sætter den kun ét ord på hver linie...
Avatar billede bramsing Nybegynder
17. oktober 2005 - 12:10 #6
Eks.
Jeg kunne ha' en linie hvor der står:
Hej med dig, jeg har det godt; dette var bare en test;

Før skulle jeg skrive memo3.Lines.add(L[0]+L[1]+L[2]+L[3]+L[4]+L[5]+L[6]+L[7]+L[8]);
for at få hele kolonen med (Hej med dig, jeg har det godt) (ud fra den række) pgr. mellemrum og komma'er, hvor jeg i og for sig kun "burde" kalde kolonen med L[0]
Avatar billede martinlind Nybegynder
17. oktober 2005 - 12:19 #7
Hmm, ja det lyder mærkeligt, jeg har ellers med stort held brugt delimiter på stringlist, men det er ren hukommelse jeg hjælper ud fra, bruger ikke delphi mere. Du kan prøve sådan :

sl := Tstringlist.Create;
sl.Delimiter := ';';
sl.LoadFromFile(edit1.Text);
//L := TStringList.Create;
//L.Delimiter := ';';
//L.DelimitedText := sl.text;
memo3.Lines.Text := sl.Text;
//L.Free;
sl.Free;

Måske det kunne være løsningen, eller har jeg ikke lige nogle gode ider
Avatar billede bramsing Nybegynder
17. oktober 2005 - 12:42 #8
Hmm.... Kan skutte få det til at virke :o(
17. oktober 2005 - 19:58 #9
Hvis du slår op i hjælpen under Commatext, som er meget lig DelimitedText, får du følgende oplysninger:

When assigning CommaText, the value is parsed as SDF formatted text. For SDF format, strings are separated by commas or spaces, and optionally enclosed in double quotes. Double quote marks that are part of the string are repeated to distinguish them from the quotes that surround the string. Spaces and commas that are not contained within double quote marks are delimiters. Two commas next to each other will indicate an empty string, but spaces that appear next to another delimiter are ignored. For example, suppose CommaText is set to:

"Stri,ng 1", "Stri""ng 2" , String 3,String4

The list will then contain:

Stri,ng 1

Stri"ng 2
String
3
String4

Note:    CommaText is the same as the DelimitedText property with a delimiter of ‘,’ and a quote character of ‘”’.
Avatar billede bramsing Nybegynder
25. oktober 2005 - 09:31 #10
Hmm.. Jeg lukker spørgsmålet igen..

Anton.. Jeg skulle have det til at virke med ; og ikke , ;o)
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