Keskusteluforumissa tänne sellaisenaan lähetetty lähdekoodi näyttää ikävältä, kun forumsofta poistaa mielestään merkityksettömät välilyönnit ja tyhjät rivit.
Mutta tässä 2 Delphillä koodattua proseduuria:
procedure AddDots(SL:TStrings); // Lisää jokaisen rivin alkuun merkkijonon '. '
procedure RemoveDots(SL:TStrings); // Poistaa jokaisen rivin alusta merkkijonon '. ', jos ko. merkkijono aloittaa rivin sisällön.
Käyttö hyvin helppoa, esim:
procedure TForm1.bnAddDotsClick(Sender: TObject);
begin
AddDots(Memo1.Lines);
end;
procedure TForm1.bnRemoveDotsClick(Sender: TObject);
begin
RemoveDots(Memo1.Lines);
end;
// em. proseduurit alkavat tästä:
const
cDotStr = '. ';
procedure AddDots(SL:TStrings);
var
i : Integer;
begin
for i := 0 to SL.Count-1 do begin
SL[i] := cDotStr SL[i];
end;
end;
procedure RemoveDots(SL:TStrings);
var
i : Integer;
S : String;
begin
for i := 0 to SL.Count-1 do begin
S := SL[i];
if pos(cDotStr, S) = 1 then begin
system.Delete(S, 1, Length(cDotStr));
SL[i] := S;
end;
end;
end;
Lähdekoodi keskusteluforumissa - pieni työkalu Delphillä
4
178
Vastaukset
- Auttaako_Tämäkään?
Edellä yritin AddDots -proseduuria.
Näköjään ei ollut ihan riittävä toimenpide.
Kokeillaanpa seuraavaa AddDots -proseduuria sen sijasta.
. procedure AddDots2(SL:TStrings);
. var
. i : Integer;
. S : String;
.
. begin
. for i := 0 to SL.Count-1 do begin
. S := SL[i];
. S := StringReplace(S, ' ', ' ', [rfReplaceAll]);
. SL[i] := cDotStr S;
. end;
. end;- Auttaako_Tämäkään
Pieni täydennys:
Ylläolevassa procedure AddDots2(SL:TStrings); -proseduurissa pitäisi olla:
S := StringReplace(S, ' ', '8nbsp;', [rfReplaceAll]);
HUOM: ylläolevassa '8nbsp;' pitäisi olla ' '
eli todennäköisesti näin:
S := StringReplace(S, ' ', ' ', [rfReplaceAll]);
forumsofta siis muokkaa koodia joskus ei-toivotuilla tavoilla. - KoodiForumille !
Auttaako_Tämäkään kirjoitti:
Pieni täydennys:
Ylläolevassa procedure AddDots2(SL:TStrings); -proseduurissa pitäisi olla:
S := StringReplace(S, ' ', '8nbsp;', [rfReplaceAll]);
HUOM: ylläolevassa '8nbsp;' pitäisi olla ' '
eli todennäköisesti näin:
S := StringReplace(S, ' ', ' ', [rfReplaceAll]);
forumsofta siis muokkaa koodia joskus ei-toivotuilla tavoilla.Auttaakohan tämäkään?
Tässä esimerkkikoodia:
procedure Test1;
asm
NOP
end;
Toimiiko sisennykset näin vai eivät ?
Välilyönti =
- No_break space
Sisennykset saa näkymään korvaamalla välilyönnit no-break spacella (ascii 160). Search-replace toimii mainiosti. Erillistä ohjelmaa ei tarvita. Ao. koodiesimerkissä yksi sisennys oli 4 välilyöntiä. Editorissa se tosin taitaa näyttää turhan pitkältä.
procedure RemoveDots(SL:TStrings);
var
i : Integer;
S : String;
begin
for i := 0 to SL.Count-1 do begin
S := SL[i];
if pos(cDotStr, S) = 1 then begin
system.Delete(S, 1, Length(cDotStr));
SL[i] := S;
end;
end;
end;
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Virkamiehille tarvitaan tuntuvat palkankorotukset
Naistenpäivänä on syytä muistuttaa, että virkamiehen euro on vain 80 senttiä. Palkat tulee saattaa samalle tasolle yksi434006Riikka Purran kaudella nousi bensan hinta yli 2 euron
Muistatteko kuinka edellisen vasemmistohallituksen aikana, ns. Marinin aikakaudella, bensiiniä sai 1,3 euron litrahinnal513651- 703218
Olisipa saanut sinuun
Tutustua paremmin. Harmi että aloin lopulta jännittämään kun näytit tunteesi niin voimakkaasti ja lähestyit niin voimaak933087Mitäs nyt sijoittajat?
Pörssit laskevat maailmalla Iranin sodan takia ja muutenkin ovat olleet Trumpin vallan alla epävarmat. Ainoa, mikä on no882066- 352028
- 241889
- 311841
- 341830
Olisitpa se hellä
Ja herkkä minkä kuvan sain sinusta irl. Haluaisin että elämässäni olisi sellainen joka arvostaa minua juuri sellaisena k231774