Autor Beitrag
Linus
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mi 08.01.03 22:29 
Hallo leutis :)

also hätte da noch ne frage....

ich habe ein eingabefeld (edit1) in das ein string geschrieben werden soll. dann noch ein eingabefeld (edit4) in, das man einen buchstaben eingibt.

dieser buchstabe soll jetzt aus dem string gelöscht werden (wenn er denn vorhanden ist....)

Bei der prozedur delete muss man ja anfang und anzahl angeben
(procedure Delete(var s:string; anfang, anzahl: integer))


1. Versuch

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button10Click(Sender: TObject);
var kette, zeichen: string;


begin
zeichen:=Edit4.Text[1];
kette:= Edit1.Text;
Delete(kette, zeichen, 1);
Edit1.Text:=kette;
end;


Fehlermeldung: Delete(kette, zeichen, 1);
Inkompatible Typen


2. Versuch

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button10Click(Sender: TObject);
var kette: string;
    zeichen: integer;

begin
zeichen:=IntToStr(Edit4.Text);
kette:= Edit1.Text;
Delete(kette, zeichen, 1);
Edit1.Text:=kette;
end;


Fehlermeldung: zeichen:=IntToStr(Edit4.Text);
Inkompatible Typen 'Integer' und 'TCaption'


Kann mir jemand helfen?
Danke :)
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Mi 08.01.03 22:45 
Delete erwartet als erstes Argument den String, als 2. die Stelle, wo es anfangen soll zu löschen und als 3. die Anzahl der zu löschenden Stellen.
Also löscht
ausblenden Quelltext
1:
delete(bla,2,3);					

Zeichen 2 bis 4 aus dem String (2, 3, 4).
Mach sowas wie
ausblenden Quelltext
1:
2:
while (Pos('a',bla) > 0) do
  delete(bla, pos('a',bla),1);

Ungetestet....
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 08.01.03 22:46 
Also:

die Funktion Delete(my_string,index,count) funktioniert folgendermaßen:

aus String "my_string" werden ab dem Buchstaben an der Position "index" soviele Buchstaben gelöscht, wie in "count" angegeben.

Beispiel:
my_string='Linus'
Delete(my_string,2,2) ==> my_string='Lus'

Wenn Du also möchtest, dass ein Buchstabe aus einem String entfernt wird (ich gehe mal davon aus, dass Du jedes Vorkommen meinst), musst Du mit einer Schleife arbeiten, die Folgendes tut:

1. Position des ersten Vorkommens des Buchstabes im String finden
2. wenn ein Vorkommen vorhanden ist, den Buchstaben unter Verwendung der Information aus (1) aus dem String entfernen
3. wenn in (2) ein Vorkommen vorhanden war, wieder mit Schritt (1) beginnen

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.01.03 23:14 
@Linus

Nicht falsch verstehen, aber wieso guckst du nicht in der Hilfe nach. Du kennst die Namen der Funktionen und kannst in der Hilfe nachgucken wie die funktionieren (da sind auch Beispiele drinn). Wie kommst du bloß auf die Idee in der Delete Prozedur, da wo man Integer eingibt, einen String einzugeben.

Wenn man eine "Inkompatible Typen" Fehlermeldung bekommt, dann schreibt man nicht im Forum, sondern guckt zuerst in der Hilfe was man falsch gemacht hat. Oder hast du noch Probleme zwischen Integer und String zu unterscheiden?