/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Opdele sætninger
Fra : Tobias Toft


Dato : 18-01-01 18:25

Hej,
Hvordan opdeler man en string i flere mindre, fx:

Hvis jeg har to edits: Edit1 og Edit2 en Memo1 og Button1.

Hvis så brugeren skriver:

"Hej Igen"

i memo'en.
Så skal edit.text:= 'Hej' og edit2.text:= 'Igen', når jeg trykker på
Button1.

Hvordan gør man det?? Det må være noget med at klippe string'en over når der
er mellemrum (eller semikolon, komma el.lign.).

Hilsen
Tobias Toft

--
________________________________________
You won't believe what I believe when I'm alone...
(DAD - Bad Craziness)

www.tt-media.com



 
 
FePe (18-01-2001)
Kommentar
Fra : FePe


Dato : 18-01-01 20:38

Tobias Toft wrote:

> Hej,
> Hvordan opdeler man en string i flere mindre, fx:
>
> Hvis jeg har to edits: Edit1 og Edit2 en Memo1 og Button1.
>
> Hvis så brugeren skriver:
>
> "Hej Igen"
>
> i memo'en.
> Så skal edit.text:= 'Hej' og edit2.text:= 'Igen', når jeg trykker på
> Button1.
>
> Hvordan gør man det?? Det må være noget med at klippe string'en over når der
> er mellemrum (eller semikolon, komma el.lign.).
>
> Hilsen
> Tobias Toft
>
> --
> ________________________________________
> You won't believe what I believe when I'm alone...
> (DAD - Bad Craziness)
>
> www.tt-media.com

function DelOrd(Ind: String);
var
i: String;
S1, S2: String;
begin
for i := 1 to Length(Ind) do begin
if Ind[i] = ' ' then Break;
S1 := S1 + Ind[i];
end;

for i := i+1 to Length(Ind) do begin
if Ind[i] = #0 then Break;
S2 := S2 + Ind[i];
end;

// indsæt værdierne i komponenterne...

end;


--
Mvh. FePe

MONICA: "I figured out I need to charge seventeen bucks a jar
just to break even. So, I've got a new plan now. Babies."
CHANDLER: "Well, your gonna need much bigger jars."

--The One With The Jam (303)-----



Niels (niLLer) (18-01-2001)
Kommentar
Fra : Niels (niLLer)


Dato : 18-01-01 22:16

Just as I expected, FePe <fepe@klog.dk> came up with this:

>function DelOrd(Ind: String);

Enten skal det rettes til en procedure, eller der skal en retur-type
på. Den linie vil give compile-error.

>var
> i: String;
> S1, S2: String;
>begin
> for i := 1 to Length(Ind) do begin
> if Ind[i] = ' ' then Break;
> S1 := S1 + Ind[i];
> end;
>
> for i := i+1 to Length(Ind) do begin
> if Ind[i] = #0 then Break;
> S2 := S2 + Ind[i];
> end;

Men det vil jo kun fungere hvis der er maksimum 2 ord, ellers vil det
andet "ord" bestå af mere end et ord!

> // indsæt værdierne i komponenterne...

Jeg ville måske ændre funktionen så den i stedet laver en TStringList,
fylder den med alle ord den finder og så returnerer den nye
StringList. Men det kommer vel an på formålet...

>end;

Niels (aka. niLLer)
--
e-mail: nmartin at iname dot com ICQ UIN: 50187323
http://xoasis.com/~niller/ - niLLer's pages (My programs, in English)
http://whitehat.dk/g4s/ - The G4S Page (Personlig side, på dansk)
-- I've been Windozed!

Tobias Toft (18-01-2001)
Kommentar
Fra : Tobias Toft


Dato : 18-01-01 22:33

Takker, efter at have lavet den om til en procedure, fungerer den helt fint.
/Toft



Thomas Due (19-01-2001)
Kommentar
Fra : Thomas Due


Dato : 19-01-01 08:37

Hvis jeg må komme med et foreslag :

Function KlipEfterOrd(var str : String) : String;
var idx : Integer;
sub : String;
Begin
idx := Pos(' ', str);
if idx > 0 then
begin
sub := Copy(str, 1, idx - 1);
Delete(str, 1, idx);
end
else
begin
sub := str;
str := '';
end;
Result := sub;
End;

Denne kode finder det første ord i strengen str, fjerner det fra strengen og
returnere det.

Måden du så f.eks. kan kalde funktionen på:

Procedure TForm1.Button1Click(Sender : TObject);
Var str, sub : String;
Begin
str := memo1.text;
while pos(' ', str) > 0 do
begin
sub := KlipEfterOrd(str);
ListBox1.Items.Add(sub);
end;
End;

Mvh
Thomas

"Tobias Toft" <tobias@tt-media.com> wrote in message
news:PhJ96.42193$W81.455178@twister.sunsite.dk...
> Takker, efter at have lavet den om til en procedure, fungerer den helt
fint.
> /Toft
>
>



Tobias Toft (22-01-2001)
Kommentar
Fra : Tobias Toft


Dato : 22-01-01 16:22

Den ser jo lidt bedre ud... Tak!

/Toft

--
________________________________________
You won't believe what I believe when I'm alone...
(DAD - Bad Craziness)

www.tt-media.com



Harald Kroning (19-01-2001)
Kommentar
Fra : Harald Kroning


Dato : 19-01-01 08:39

"Tobias Toft" <tobias@tt-media.com> skrev i en meddelelse
news:NFF96.41842$W81.437438@twister.sunsite.dk...
> Hej,
> Hvordan opdeler man en string i flere mindre, fx:
>
> Hvis jeg har to edits: Edit1 og Edit2 en Memo1 og Button1.
>
> Hvis så brugeren skriver:
>
> "Hej Igen"
>
> i memo'en.
> Så skal edit.text:= 'Hej' og edit2.text:= 'Igen', når jeg trykker på
> Button1.
>
> Hvordan gør man det?? Det må være noget med at klippe string'en over når
der
> er mellemrum (eller semikolon, komma el.lign.).

Hej

Her er en procedure som også virker hvis der er flere mellemrum i linien.
Procedure hælder alle ord ind i en TStrings.

procedure SplitLine(Line : String;Strings : TStrings);
var
i : integer;
const
SplitChar : char = #32; //mellemrum
begin
Strings.Clear;
if Line='' then
exit;
Repeat
i:=pos(SplitChar,line);
if i=0 then
i:=Length(Line)+1;
Strings.Add(copy(Line,1,i-1));
Delete(Line,1,i);
until Line='';
end;

var
tekst : string;
StringList : TStringList;
begin
tekst:='Dette er en linie med nogle ord i.';
StringList:=TStringList.Create;
SplitLine(Tekst,StringList);
end;

MVH HK



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste