AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MessageDlg - Schleifen Problem

Ein Thema von No3ody · begonnen am 28. Mai 2013 · letzter Beitrag vom 28. Mai 2013
Antwort Antwort
No3ody

Registriert seit: 28. Mai 2013
2 Beiträge
 
#1

MessageDlg - Schleifen Problem

  Alt 28. Mai 2013, 16:57
Delphi-Version: 5
Hey Leute. Ich habe folgendes Problem: Meine Aufage ist es ein beliebiges Zeichen in einer beliebigen Zeichenkette ausfindet zu machen, indem es durch knopfdruck groß geschrieben wird. Das bekomme ich soweit auch noch hin. Wenn dieses beliebige Zeichen jedoch nicht in der Zeichenkette vorhanden ist, soll eine Messagebox mit "nicht vorhanden" erscheinen. Dort trifft es bei mir auf Probleme.

So sieht es bei mir momentan aus:
procedure TForm1.Button1Click(Sender: TObject);
var
j,i:Integer;
z,x:string;
begin
j:=length(edit1.Text);
x:=edit1.Text;
for i := 1 to j do
begin
if edit2.Text[1]=edit1.Text[i] then
begin
z:=ansiuppercase(x[i]);
delete(x,i,1);
insert(z,x,i);
edit1.text:=x;
end;
end;
end;


Wenn ich "MessageDlg('nicht vorhanden.', mtInformation, [mbOK], 0);" reinschreibe muss ich zuvor eine schleife programmieren. Ich war vorhin soweit, dass er mir je nach Zeichenkettenlänge x, x mal "nicht vorhanden" geschrieben hat.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: MessageDlg - Schleifen Problem

  Alt 28. Mai 2013, 17:03
Hallo.

Bitte pack den Quelltext in (Delphi)(/Delphi)-Tags (mit eckigen Klammern), dann kann man ihn auch vernünftig lesen. Hier einmal in einer augenfreundlicheren Variante:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   j, i: Integer;
   z, x: string;
begin
   j := length(edit1.Text);
   x := edit1.Text;

   for i := 1 to j do
   begin
      if edit2.Text[1] = edit1.Text[i] then
      begin
         z := ansiuppercase(x[i]);
         delete(x, i, 1);
         insert(z, x, i);
         edit1.Text := x;
      end;
   end;

end;
Dann siehst du wohl auch einfacher, dass du den Dialog hinter das end; der for-Schleife packen musst. Wie du schon richtig sagst, muss die for-Schleife zuvor passieren.

Geändert von Der schöne Günther (28. Mai 2013 um 17:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#3

AW: MessageDlg - Schleifen Problem

  Alt 28. Mai 2013, 17:11
  1. Bitte DELPHI-Tags (das Helmsymbol im Forum-Editor) - oder wenigstens CODE-Tags verwenden, denn so ist dein Code viel zu mühsam zu lesen!
  2. Bitte Code ordentlich einrücken. Bei den paar Zeilen mag das noch nicht so kritisch sein, aber wenn der Code länger wird, ist saubere Einrückung unabdingbar!
  3. Verwende aussagekräftige Variablenbezeichner! x, z, edit1 und edit2 sind nicht aussagekräftig. Im Moment magst du noch wissen, welche Variable was bezeichnet und wofür sie gut ist, aber ein anderer, der in den Code schaut, muss sich erst reinlesen, und auch du selbst wirst in Wochen/Monaten erstmal überlegen müssen, was du da geschrieben hast.

So, genug der "Standpauke", nun zum Problem: Ohne jetzt den Code komplett umzuschreiben (es bietet sich eine Funktion mit Boolescher Rückgabe an, die besagt, ob das Zeichen gefunden wurde), fällt mir dies auf Anhieb ein:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  j,i:Integer;
  z,x:string;
  found: Boolean;
begin
    found:= False;
    j:= length(edit1.Text);
    x:= edit1.Text;
    for i := 1 to j do
    begin
        if edit2.Text[1]=edit1.Text[i] then
        begin
            found:= True;
            z:=ansiuppercase(x[i]);
            delete(x, i, 1);
            insert(z, x, i);
            edit1.text:= x;
        end;
    end;
    if NOT found then ShowMessage('nicht gefunden');
end;
MfG Dalai
  Mit Zitat antworten Zitat
No3ody

Registriert seit: 28. Mai 2013
2 Beiträge
 
#4

AW: MessageDlg - Schleifen Problem

  Alt 28. Mai 2013, 17:28
Vielen Dank für eure schnellen Antworten. Mein Problem wurde gelöst
Tut mir leid, dass ich den Code nicht richtig eingefügt habe. Toll, dass ihr mir trotzdem geholfen habt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 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