al de help van delphi bekeken en wees duidelijk, want dit zul je wel niet bedoelen:
str := klaas;
str := kluis;
str := klaas;
str := kluis;
Verwijderd
code:
1
2
3
4
5
6
| var s : string;
begin
s := 'voor'
s[2] := 'i' { s = 'vior' }
s[3] := 'e' { s = 'vier' }
end; |
Ik weet dat Delphi help soms onduidelijk kan zijn
Een aantal letters van een string wijzigen had ik het overOp zaterdag 22 september 2001 17:33 schreef Tim Schuhmacher het volgende:
al de help van delphi bekeken en wees duidelijk, want dit zul je wel niet bedoelen:
str := klaas;
str := kluis;
Nou ja een for loopje pakken van 0 tot length(str)-1 en dan str[i]
Ik wou eigelijk wat uit een complete tekst wijzigen, dat gaat een beetje moeilijk als ik het letter voor letter het moet uit tellenOp zaterdag 22 september 2001 17:39 schreef Lynx666 het volgende:
code:
1 2 3 4 5 6var s : string; begin s := 'voor' s[2] := 'i' { s = 'vior' } s[3] := 'e' { s = 'vier' } end;
Ik weet dat Delphi help soms onduidelijk kan zijn
Verwijderd
jij begint te indexeren bij 0, str[0] geeft de lengte van de string aan en delphi geeft dan een foutmelding aan. De string begint bij str[1]Op zaterdag 22 september 2001 17:42 schreef Tim Schuhmacher het volgende:
Nou ja een for loopje pakken van 0 tot length(str)-1 en dan str[i]
maar om terug te komen op hdd's probleem:
Wat je zou kunnen doen is:
code:
1
2
3
4
5
6
7
8
9
| procedure Replace(var s : string; repl, with : string);
var sub1, sub2 : string;
idx : byte;
begin
idx := pos(repl,s);
sub1 := copy(s,1,idx-1);
sub2 := copy(s,idx+Length(repl),Length(s)-(idx+Length(repl));
s := sub1+with+sub2;
end; |
voorbeeld:
code:
1
2
3
4
5
| var str : string;
begin
str := 'hallo mensen';
Replace(str, 'mensen','jongens'); {str = 'hallo jongens'}
end; |
Dit dan?
btw. dit heb ik dus nog niet getest, zal misschien nog een bugje inzitten, maar het gaat om het idee
Verwijderd
t idee werkt (uiteraard ook niet getest) je moet 't alleen nog ietsjes uitbreiden. Als je 'm 'hallo mensen mensen' vervangt ie alleen de 1e.
Verwijderd
goed, dan wordt ie zoOp zaterdag 22 september 2001 18:12 schreef Yarvieh het volgende:
t idee werkt (uiteraard ook niet getest) je moet 't alleen nog ietsjes uitbreiden. Als je 'm 'hallo mensen mensen' vervangt ie alleen de 1e.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| procedure Replace(var s : string; repl, with : string);
var sub1, sub2 : string;
idx : byte;
begin
while pos(repl,s) > 0 do
begin
sub1 := ''; Sub2 := '';
idx := pos(repl,s);
If idx > 1 then
sub1 := copy(s,1,idx-1);
If idx < Length(s)-Length(repl) then
sub2 := copy(s,idx+Length(repl),Length(s)-(idx+Length(repl));
s := sub1+with+sub2;
end;
end; |
nog een paar checks erbij voor de zekerheid
edit:
bugfix
bugfix
function StringReplace(string, oldpattern, newpattern, replaceflags): string;
check Delphi help. Is allang gemaakt (en maar goed ook). Als je als ReplaceFlag iig [rfReplaceAll] opneemt vervangt hij alle occurrences van oldpattern door newpattern.
check Delphi help. Is allang gemaakt (en maar goed ook). Als je als ReplaceFlag iig [rfReplaceAll] opneemt vervangt hij alle occurrences van oldpattern door newpattern.
Pagina: 1