[Delphi 5] String opdelen in stukken

Pagina: 1
Acties:
  • 190 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • Flipmo2K
  • Registratie: April 2000
  • Niet online
Ik moet voor school een opdracht maken waarbij ik een InputQuery heb, waarbij de invoer een coordinaat is (bijv. x,y). De bedoeling is nu de string gesplitst wordt in een getal voor de komma (x) en het getal achter de komma (y). Hoe doe ik dit?

Acties:
  • 0 Henk 'm!

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 06-06 10:04

Tsjipmanz

Der Rudi ist da

Hmm zelf niet echt over nagedacht zeker. Als je in de manual onder strings kijkt kan je vast wel wat vinden over het parsen van strings, functies als left en right (weet niet hoe dit in delphi precies is gedaan) en substrings.

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


Acties:
  • 0 Henk 'm!

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 17:50

Tomatoman

Fulltime prutser

Een voorbeeldje met een button en twee labels:
code:
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
const
  Vraag = 'Wat is de koers van de AEX (bijvoorbeeld 502,15)?';
var
  HeleString: string;
begin
  InputQuery('Vraagje', Vraag, HeleString);
  Label1.Caption := Copy(HeleString, 1, Pos(',', HeleString) -1);
  Label2.Caption := Copy(HeleString, Pos(',', HeleString) +1, MaxInt);
end;

Een goede grap mag vrienden kosten.


Acties:
  • 0 Henk 'm!

  • Flipmo2K
  • Registratie: April 2000
  • Niet online
Uhmm, ik zit nu in 't 2e blok van Hogere Informatica en daar wordt niks gezegd over het parsen van strings, substrings of iets dergelijks... Lijkt me niet dat ik dat dan nodig heb :).
En die help van Delphi is ook niet alles (misschien wel TE uitgebreid).

Acties:
  • 0 Henk 'm!

  • Flipmo2K
  • Registratie: April 2000
  • Niet online
Tomatoman, bedankt voor je hulp! Ik ga 't dadelijk effe uitproberen!

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:02

Creepy

Tactical Espionage Splatterer

Kijk eens naar de functies pos, copy enen length

Of in de delphi help bij String functions.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 06-06 10:04

Tsjipmanz

Der Rudi ist da

Op woensdag 14 november 2001 12:57 schreef Flipmo2K het volgende:
Uhmm, ik zit nu in 't 2e blok van Hogere Informatica en daar wordt niks gezegd over het parsen van strings, substrings of iets dergelijks... Lijkt me niet dat ik dat dan nodig heb :).
Nee, een stuk code als:
code:
1
 Copy(HeleString, 1, Pos(',', HeleString) -1);

kopieert ook vast niet een substring lopend van het eerste karakter tot het laatste karakter voor de komma.
Nog net niet |:( - waardig ;)

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


Acties:
  • 0 Henk 'm!

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 17:50

Tomatoman

Fulltime prutser

Nog even een aanvulling om de code wat netter te maken. Voordat InputQuery wordt aangeroepen, moet HeleString worden geïnitialiseerd, bijvoorbeeld:
code:
1
2
3
4
...
begin
  HeleString := 'Typ hier de koers';
  InputQuery(...

Dat is nodig omdat de waarde van een locale variabele ongedefinieerd is, totdat er een waarde aan wordt toegekend.
code:
1
  Label2.Caption := Copy(HeleString, Pos(',', HeleString) +1, MaxInt);

Hiermee worden alle karakters uit HeleString gekopieerd van de eerste letter na de komma tot en met de letter op positie MaxInt (ruim twee miljard letters dus). Das geen probleem, want Copy kopieert nooit meer letters dan HeleString lang is. Je kunt dus net zo goed schrijven:
code:
1
  Label2.Caption := Copy(HeleString, Pos(',', HeleString) +1, Length(HeleString));

Een goede grap mag vrienden kosten.


Acties:
  • 0 Henk 'm!

  • Flipmo2K
  • Registratie: April 2000
  • Niet online
Op woensdag 14 november 2001 14:23 schreef tomatoman het volgende:
Nog even een aanvulling om de code wat netter te maken. Voordat InputQuery wordt aangeroepen, moet HeleString worden geïnitialiseerd, bijvoorbeeld:
code:
1
2
3
4
...
begin
  HeleString := 'Typ hier de koers';
  InputQuery(...

Dat is nodig omdat de waarde van een locale variabele ongedefinieerd is, totdat er een waarde aan wordt toegekend.
code:
1
  Label2.Caption := Copy(HeleString, Pos(',', HeleString) +1, MaxInt);

Hiermee worden alle karakters uit HeleString gekopieerd van de eerste letter na de komma tot en met de letter op positie MaxInt (ruim twee miljard letters dus). Das geen probleem, want Copy kopieert nooit meer letters dan HeleString lang is. Je kunt dus net zo goed schrijven:
code:
1
  Label2.Caption := Copy(HeleString, Pos(',', HeleString) +1, Length(HeleString));
Hehe, bedankt voor de uitleg, maar ik was had er effe naar gekeken en toen snapte ik 't. Op zich best wel logisch, maja je moet er maar opkomen :P. Nogmaals bedankt.

Oh, en Tsjipmanz:
...(code)... kopieert ook vast niet een substring lopend van het eerste karakter tot het laatste karakter voor de komma.
Hoe moet ik dat nou weten als we nog niet eens uitgelegd hebben gekregen wat een substring is? :?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:02

Creepy

Tactical Espionage Splatterer

kan je engels? Sub... String.. substring.. sub = onderzeeboot.. dus een onderzeebootstring :)

Ok.. eehhmm... sub = onderdeel van afcource.. dus met logisch nadenken had je toch wel kunnen weten wat er wordt bedoelt met substring lijkt me..

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1