Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Operationen mit Zeichenketten (https://www.delphipraxis.net/156526-operationen-mit-zeichenketten.html)

Lin 5. Dez 2010 16:58

Operationen mit Zeichenketten
 
Hallo,
habe folgendes Problem und hoffe man kann mir weiter helfen.
Ich will per knopfdrück die Stelle x, die in Edit2 bestimmt wird im Edit1 löschen.
Ich habe mir folgendes überlegt:

procedure TForm1.Button3Click(Sender: TObject);
var s,p:String;
i: Integer;
begin
s:= Edit1.Text;
p:= Edit2.text;
for i := 1 to length(s) do
delete(s,p,1);
Edit1.Text:= s;
Edit2.Text:= p;
end;

Zur Zeit ist dies mein Problem. Ich warne euch mal in voraus...es werden leider weitere Folgen aber ich gib mein bestes um es selber zu lösen. .___.
Bis dahin Vielen Dank! :)

DeddyH 5. Dez 2010 17:07

AW: Operationen mit Zeichenketten
 
Meintest Du statt Length() vielleicht StrToInt()? Und die Schleife ist irgendwie unnötig, es sei denn, ich habe die Aufgabenstellung nicht ganz verstanden.

Lin 5. Dez 2010 17:20

AW: Operationen mit Zeichenketten
 
tut mir leid wenn ich mein Problem nicht so richtig erklärt habe...
also gut ich versuch es noch mal^^
ich habe in Edit1 meine Nachricht zB. "Hallo"
in edit2 gebe ich die stelle, die ich löschen möchte zB. Stelle:2
per Knopfdrück erscheint nun in edit1 "Hllo"
ich habe mir folgendes überlegt, ich...warte mal...:oops:ich hab echt****gedacht..du hast recht ich brauch keine Vorschleife..wozu auch...ne die schleife muss weg die ist je nutzlos...ok jetzt aber
ich dachte mir wenn ich den delete befehl um die erste Stelle zu löschen kann
(var s:string;
begin
S := Edit1.Text;
Delete(S, 1, 1);
Edit1.Text := S;
end;)

dann kan ich anstatt die erste stelle einfach stelle p:=Edit2 benutzen...
eigentlich muss es doch funktionieren oda?

DeddyH 5. Dez 2010 17:25

AW: Operationen mit Zeichenketten
 
Nochmal: in Edit2 steht ein String, wenn Du den als Zahl interpretieren willst, musst Du ihn erst umwandeln (StrToInt). Allerdings sage ich gleich dazu, dass das so nicht fehlersicher ist, durch "dumme" Benutzereingaben kann es noch zu Fehlern kommen, dazu könntest Du Dir TryStrToInt oder StrToIntDef einmal anschauen.

Lin 5. Dez 2010 17:45

AW: Operationen mit Zeichenketten
 
^_______^
Yup es hat geklappt^^ Danke!
ich musste es tatsächlich nur zu integer umwandeln .^^
1.Problem gelöst yay!
hmm..ich verstehe das da durch dumme eingabe probleme entstehen können...ich werde mir den befehl mal ansehen und versuchen es anzuwenden...
aber zuerst versuche ich gerade folgendes problem zu lösen.
ich habe noch einen edit3 wo ich ein Zeichen eingeben kann
jetzt muss ich den Zeichen in der stelle, die in edit2 bestimmt wird in edit1 einfügen...
zB. Edit1 "Hallo"
edit2 STelle: 3
edit3 Zeichen: "l"
per knopfdrück edit1 "halllo"

leider hab ich bis jetzt nicht wirklich eine idee...brauch eine befehl das Zeichen einfügen kann...such gerade im i-net nach wenn ich eine idee habe werde ich es posten. Ein paar denkstüpser und hilfestellungen sind jederzeit willkommen^^

DeddyH 5. Dez 2010 17:55

AW: Operationen mit Zeichenketten
 
Delphi-Referenz durchsuchenSystem.Insert

Lin 5. Dez 2010 18:15

AW: Operationen mit Zeichenketten
 
Danke für den Link.:)
Ich bekaum auch schon meine erste Idee und hier ist sie auch.

procedure TForm1.Button4Click(Sender: TObject);
var s,p,q:string;
begin
s:=Edit1.Text; hier ist meine nachicht
p:= Edit2.Text; hier ist die stelle
q:= Edit4.Text; [da gebe ich mein zeichen ein, dass hinzugefügt werden muss
Insert(q,s,StrToInt(p)) ;
end;

hab ich das richtig verstanden? in der Klammer von Insert wird zuerst das zeichen, dass hinzugefügt werden muss, dann mein string, und zum schluss die position...oda?
was hab ich falsch gemacht...?

DeddyH 5. Dez 2010 18:19

AW: Operationen mit Zeichenketten
 
Wieso falsch gemacht? Was funktioniert denn nicht? Die Parameter sind jedenfalls in der richtigen Reihenfolge.

Lin 5. Dez 2010 18:27

AW: Operationen mit Zeichenketten
 
hmmm....ich weiß es nicht...
das seltsame delphi startet den program ohne fehlermeldung...aber wenn ich die stelle und das Zeichen eingebe und dann auf Knopf einfügen drücke macht er gar nichts...
bin icht ratlos..soll ich den Programm neu starten oder spielt das keine rolle...hab auch den quelltext überprüft....mir ist nichts aufgefallen was falsch sein kann...

DeddyH 5. Dez 2010 18:31

AW: Operationen mit Zeichenketten
 
Ist denn die angegebene Stelle auch kleiner als die Länge des Strings? Lies Dir die Hilfe zu Insert noch einmal ganz genau durch.

Lin 5. Dez 2010 18:38

AW: Operationen mit Zeichenketten
 
ja da die stelle beträgt nur 2 während der string 5 lang ist.
mir ist gerade was aufgefallen wenn ich den programm starte, ist in mein edit2 und edit3 wo die stelle angegeben werden muss die aufschrift Edit2 bzw. Edit3 zu lesen, wenn ich die lösche und durch 2 ändere, taucht bei der ereignisprotokoll 2 mal in rot:
Thread-ID:1868.Prozess Projekt1.exe(3088)
Thread-ID:3840.Prozess Projekt1.exe(3088)

hoffe das man damit was anfangen kann....

DeddyH 5. Dez 2010 18:41

AW: Operationen mit Zeichenketten
 
Das sind eben die Standardtexte, die die IDE automatisch vergibt (also der Name der jeweiligen Komponente). Hast Du denn zur Laufzeit einmal andere Werte eingegeben und damit getestet?

Lin 5. Dez 2010 18:52

AW: Operationen mit Zeichenketten
 
ja hab ich. ich hab sogar andere nachricht benutzt und auch andere stellen und zeichen...
in meinem Program hab ich auch eine length funktion die während des eintippens des wortes in edit1 die länge bestimmt und in edit3 wiedergibt. Köte der fehler entstanden sein, dass aufeinmal ein wort hinzugefügt werden soll oda spielt das keine Rolle?...
Ich werd mal den Quelltext eingeben vielleicht findest du mein fehler...
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
AnzahlZeichen: TButton;
Button8: TButton;
Button9: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure Edit1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);

private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
S := Edit1.Text;
Delete(S, 1, 1);
Edit1.Text := S;
end;

procedure TForm1.Button2Click(Sender: TObject);
var s:string;
begin
s:= Edit1.Text;
delete (s,length(s),1) ;
Edit1.Text := s;
end;

procedure TForm1.Button3Click(Sender: TObject);
var s,p:String;
begin
p:=Edit2.Text;
S:=Edit1.Text;
Delete(S,StrToInt(p),1);
Edit2.Text:= p;
Edit1.Text:= S;
end;

procedure TForm1.Button4Click(Sender: TObject);
var s,p,q:string;
begin
s:=Edit1.Text;
p:= Edit2.Text;
q:= Edit4.Text;
Insert(q,s,StrToInt(p)) ;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin

Edit3.Text:= Inttostr(length(Edit1.text));


end;

end.

tut mir leid für die umstände...
hab sogar ein muster für mein program wie es werden soll..wenn es dir hilft an was für ein program ich da pastle....

http://www.lessing-gymnasium.de/unte...rs/dpue120.htm

DeddyH 5. Dez 2010 19:06

AW: Operationen mit Zeichenketten
 
Häng doch entweder das Projekt als *.zip an oder benenne Deine Komponenten so, dass man auf deren Funktion schließen kann (bei btnDeleteFirstChar weiß ich, dass das erste Zeichen gelöscht werden soll, aber was soll bei Button24 passieren?).

Sir Rufo 5. Dez 2010 19:20

AW: Operationen mit Zeichenketten
 
Delphi-Quellcode:
Procedure TForm1.Button4Click(Sender: TObject);
var s,p,q:string;
begin
  s:=Edit1.Text; // hier ist meine nachicht
  p:= Edit2.Text; // hier ist die stelle
  q:= Edit4.Text; // da gebe ich mein zeichen ein, dass hinzugefügt werden muss
  Insert(q,s,StrToInt(p)) ;
  Edit1.Text := s; // und hier wird es jetzt auch angezeigt
end;
Eine kleine Bitte: Setze den Quelltext doch auch bitte in Delphi-Tags (so wie ich das gemacht habe)

Lin 5. Dez 2010 19:42

AW: Operationen mit Zeichenketten
 
tut mir leid, dass es so lange gedauert hat, hab versucht als zip datei zu senden. Hat leider nicht geklappt wenn ich den Knopf Anhang verwalten drücke pessiert nichts...
ich hoffe ich konnte irgendwie weiter helfen. Ansonsten ist es halb so schlimm...

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Nachricht: TEdit;
    AngegebeneStelle: TEdit;
    LaengeDesTextes: TEdit;
    NeuerZeichen: TEdit;
    AnzahDerZeichen: TEdit;
    Loesche1ziffer: TButton;
    loescheLetzteZiffer: TButton;
    LoescheAngegebeneZiffer: TButton;
    FuegeDieZiffer: TButton;
    AllesZuKleinBuchstabe: TButton;
    AnzahlZeichen: TButton;
    LoescheAngegebenenZeichen: TButton;
    PalindromDa: TButton;
    PalindromJa: TRadioButton;
    PalindromNein: TRadioButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    ZuGrossBuchstabe: TButton;
    procedure NachrichtChange(Sender: TObject);
    procedure Loesche1zifferClick(Sender: TObject);
    procedure loescheLetzteZifferClick(Sender: TObject);
    procedure LoescheAngegebeneZifferClick(Sender: TObject);
    procedure FuegeDieZifferClick(Sender: TObject);
    procedure AngegebeneStelleChange(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
   
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Loesche1zifferClick(Sender: TObject);
var s:string;
begin
  S := Edit1.Text;     { TODO : S ist mein Nachricht, hier wird die erste Stelle gelöscht }
Delete(S, 1, 1);
Edit1.Text := S;
end;

procedure TForm1.loescheLetzteZifferClick(Sender: TObject);
var s:string;
begin
 s:= Edit1.Text;        { TODO : S ist mein Nachricht, hier wird die letzte Stelle gelöscht }
delete (s,length(s),1) ;
Edit1.Text := s;
end;

procedure TForm1.LoescheAngegebeneZifferClick(Sender: TObject);
var s,p:String;
begin
p:=Edit2.Text;
S:=Edit1.Text;
  Delete(S,StrToInt(p),1);
Edit2.Text:= p;
Edit1.Text:= S;
end;



procedure TForm1.FuegeDieZifferClick(Sender: TObject);
var s,p,q:string;
begin
  s:=Edit1.Text;
  p:= Edit2.Text;
  q:= Edit4.Text;
  Insert(q,s,StrToInt(p)) ;
end;


procedure TForm1.NachrichtChange(Sender: TObject);
begin
   Edit3.Text:= Inttostr(length(Edit1.text));
end;


end.

Lin 5. Dez 2010 21:07

AW: Operationen mit Zeichenketten
 
irgendwie reagiert mein Program nicht mehr...-__-"
hatte schon die Idee alles neu zu schreiben(dachte vielleicht habe ich ausversehen etwas wichtiges gelöscht) bringt aber nicht wirklich viel...>_<
Ich habe den Befehl einfügen schon aufgegeben dachte mir nachdem ich ALLES neu geschrieben und geformt habe, ich sollte nun mit dem Befehll alles zu kleinBuchstaben umwandel arbeiten. Der funktioniert auch irgendwie nicht obwohl ich mir beinahe sicher bin, dass ich es richtig geschrieben habe...hat irgendjemand eine Idee was man da machen kann oder ist es hoffnungslos???

Befehl lautet für in Edit1 geschriebene Nachricht in klein Buchstaben umzuwandeln:
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var s,s1:string;
begin
s:=Edit1.Text;
s1:= AnsiLowerCase(s);
end;
kann irgendjemand mir sagen was für alternative es gibt?

p80286 5. Dez 2010 21:44

AW: Operationen mit Zeichenketten
 
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var s,s1:string;
begin
  s:=Edit1.Text;
  s1:= AnsiLowerCase(s);
  Edit1.Text:=s1;
end;
Du mußt s1 auch wieder zur Anzeige bringen.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 Uhr.

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