Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi wie mach ich ein hallöchen zu einem h.l.ö.h.n ? (https://www.delphipraxis.net/37351-wie-mach-ich-ein-halloechen-zu-einem-h-l-oe-h-n.html)

ch33seburger 4. Jan 2005 22:30


wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
hi :)

also ich würde gern nen quiz bauen.
und dazu bräuchte ich so ne funktion...

also das jeder zweiter buchstabe zu einem '.' wird. (für die tipps)
allerdings sollten die leerzeichen nicht zu einem '.' gemacht werden sondern ein leerzeichen bleiben ^^

also das quasi: 'Der Hase' zu einem 'D.r H.s.' wird.

würde mich sehr über eine antwort freuen!
danke

Daniel 4. Jan 2005 22:33

Re: wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
Nach dem Lesen Deines Beitrages ist klar, was Du willst - aber bitte bringe den Titel in eine Form, aus der direkt deutlich wird, was Du machen willst. Danke. ;-)

Luckie 4. Jan 2005 22:38

Re: wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
Hm, also das erste, was mir dazu einfällt währe Delphi-Referenz durchsuchenStringReplace.

ch33seburger 4. Jan 2005 22:44

Re: wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
hm.. mit einem stringreplace kann ich doch nur bestimmte buchstaben ersetzen oder etwa nicht?
aber ich will doch jeden zweiten buchstaben haben :>

Chris1986 4. Jan 2005 22:49

Re: wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
Hi
Geh doch einfach mit einer while-Schleife von Zeichen 1 bis length(deinstring).
Z.B. so:
Delphi-Quellcode:
var i: integer;
    deinstring: string;
begin
  i := 2;
  while i <= length(deinstring) do
  begin
    if deinstring[i] <> ' '
      then deinstring[i] := '.';
    inc(i, 2); //Nur jeder 2te Buchstabe soll verändert werden
  end;
end;
MfG
Christian

//Edit: length, nicht count :wall:

gothic_mike 4. Jan 2005 22:56

Re: wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
Zitat:

Zitat von ch33seburger
hm.. mit einem stringreplace kann ich doch nur bestimmte buchstaben ersetzen oder etwa nicht?
aber ich will doch jeden zweiten buchstaben haben :>

probiers mal so (Nicht getestet, nur mal schnell so hingetippert):

Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Var
  DerString: String;
  ZweitesZeichen: Boolean;
  i: integer;
Begin
  DerString := Edit1.Text;
  ZweitesZeichen := False;
  For i := 1 To Length(DerString) Do
    If DerString[i] <> ' ' Then
    Begin
      If ZweitesZeichen Then
      Begin
        DerString[i] := '.';
        ZweitesZeichen := False;
      End
      Else
        ZweitesZeichen := True;
    End
    Else
      ZweitesZeichen := False;

  Edit2.Text := DerString;
End;

ch33seburger 4. Jan 2005 22:59

Re: wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
danke :D
hat wunderbar geklappt!

vielen dank

Magier 4. Jan 2005 23:24

Re: wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
Delphi-Quellcode:
function replacetext(workstring:string):string;
var i, gerade:integer;
s, s2:string;
begin
s:= workstring;
gerade:=1;
for i := 1 to length(s) do begin
if (gerade mod 2 =1) or (s[i]=' ') then s2:=s2+s[i] else s2:=s2+'.';
gerade:=gerade+1;
end;
result :=s2;
end;
//oh, ich sollte öfter f5 drücken... :roll: :roll: :roll:

Christian Seehase 5. Jan 2005 00:53

Re: wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
Moin Magier,

weil's mir gerade so ins Auge springt:
Die Variablen s2 und gerade kannst Du einsparen:

Delphi-Quellcode:
function replacetext(workstring:string):string;

var
  i : integer;
  s : string;

begin
  s := workstring;
  for i := 1 to length(s) do begin
    if (i mod 2 = 0) and (s[i] <> ' ') then s[i] := '.';
  end;
  result :=s;
end;

Chris1986 5. Jan 2005 09:33

Re: wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
@ Christian Seehase:
Warum benutzt du zum Zerpflücken des Strings nicht direkt die Variable "workstring"?

MfG
Christian

glkgereon 5. Jan 2005 09:45

Re: wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
ich sag es geht noch kürzer:

Delphi-Quellcode:
function workstring(Value:string):string;
var i:integer;
begin
  for i:=1 to length(Value) do
    if (i mod 2=0) and (Value[i]<>' ') then Value[i]:='.';
  Result:=Value;
end;
oder gar so:

Delphi-Quellcode:
procedure workstring(var Value:string);
var i:integer;
begin
  for i:=1 to length(Value) do
    if (i mod 2=0) and (Value[i]<>' ') then Value[i]:='.';
end;
Edit: bedingung übersehen :duck:

Nothine 5. Jan 2005 10:15

Re: wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
Zitat:

Zitat von Christian Seehase
Moin Magier,

weil's mir gerade so ins Auge springt:
Die Variablen s2 und gerade kannst Du einsparen:

Delphi-Quellcode:
function replacetext(workstring:string):string;

var
  i : integer;
  s : string;

begin
  s := workstring;
  for i := 1 to length(s) do begin
    if (i mod 2 = 0) and (s[i] <> ' ') then s[i] := '.';
  end;
  result :=s;
end;

das "i mod 2 = 0" reicht aber nicht aus, denn bspw. bei dem text "Hase Hase" kommt bei deiner funktion "H.s. .a.e" raus...
um sowas zu umgehen kann man z.B. eine zweite zählvariable einbauen, die die position ab dem letzten leerzeichen enthält, z.B. so:
Delphi-Quellcode:
function ReplaceText(const WorkString: string): string;
var I,C: Integer;
    S: string;
begin
  S := WorkString;
  C := 0;
  for I := 1 to Length(S) do begin
    Inc(C);
    if S[I] <> ' ' then begin
      if C mod 2 = 0 then
        S[I] := '.';
    end else C := 0;
  end;
  Result := S;
end;
dann wird aus dem doppelten hasen (über sinngehalt wird sich nich gestritten :mrgreen:) auch wieder "H.s. H.s." :wink:

Christian Seehase 5. Jan 2005 12:10

Re: wie mach ich ein hallöchen zu einem h.l.ö.h.n ?
 
Moin Christian,

Zitat:

Zitat von Chris1986
Warum benutzt du zum Zerpflücken des Strings nicht direkt die Variable "workstring"?

Gewohnheit.
Ich verwende bei Parametern immer var oder const.

@Nothine:
Zitat:

Zitat von Nothine
das "i mod 2 = 0" reicht aber nicht aus,

bezüglich der Vorgabe schon ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz