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
. Hoe doe ik dit?
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 -
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.
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).
En die help van Delphi is ook niet alles (misschien wel TE uitgebreid).
Kijk eens naar de functies pos, copy enen length
Of in de delphi help bij String functions.
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
Nee, een stuk code als: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.
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

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -
Nog even een aanvulling om de code wat netter te maken. Voordat InputQuery wordt aangeroepen, moet HeleString worden geïnitialiseerd, bijvoorbeeld:
Dat is nodig omdat de waarde van een locale variabele ongedefinieerd is, totdat er een waarde aan wordt toegekend.
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
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.
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 opkomenOp 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));
Oh, en Tsjipmanz:
Hoe moet ik dat nou weten als we nog niet eens uitgelegd hebben gekregen wat een substring is?...(code)... kopieert ook vast niet een substring lopend van het eerste karakter tot het laatste karakter voor de komma.
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..
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