procedure TForm1.Button1Click(Sender: TObject); var p : Pchar; s : string; begin p := \'Hesten.er grøn\'; s := string(p); Delete(s, pos(\'.\', s), length(s)); p := pchar(s); Label1.Caption := p; end;
morten_s >> Det glæder mig at du har tager det med hesten op. Dog vil jeg gerne bringe et par korrektioner til din løsning ....
I Delphi 3ff kan du altid stoppe en Pchar ind i stedet for en String. Delphi laver sev et type cast. Fordet andet skal du huske at tjekke for om pos retunerer 0 (nul) fordi der ingen . (punktum) er i din streng .... Så derfor skal din løsning se ud som følger :
procedure TForm1.Button1Click(Sender: TObject); var p : Pchar; i : Integer begin p := \'Hesten.er grøn\'; i := pos(\'.\', p); if i <> 0 then Delete(p, i, length(p)); Label1.Caption := p; end;
Hvis i er 0, er der ikke noget .(punktum), så returnere udtrykket Delete(s, pos(\'.\', s), length(s));, hele strengen hvilket også er korrekt (gælder min delphi 5)
så ingen grund til i <> 0.
Hvis i skulle blive negativ, ikke fordi jeg kan se hvordan det skulle lade sig gøre, så returnere Delete(s, pos(\'.\', s), length(s)); hele strengen, hvilket hypotetisk må anses for rigtigt, idet det ikke eksisterende angivende punktum jo må eksistere før strengen.
Hvis i > length(s) så returnere delphi hele strengen.
Det eneste Delphi \"Brokker\" sig over er hvis nogen skulle få den ide at sætte en pchar ind på strengens plads i delete (gælder min Delphi 5 version), derfor er det din løsning som er forkert. Prøv selv Jens ;-)))
procedure TForm1.Button1Click(Sender: TObject); var p : Pchar; s : string; a, muh : Integer; begin p := \'Koen.er orange\'; s := string(p); a := pos(\'.\', s); for muh := 0 to a do delete(s, 1, 1); p := pchar(s); end;
-Remis
Synes godt om
Ny brugerNybegynder
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.