AGB  ·  Datenschutz  ·  Impressum  







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

Hälfte eines Strings ausgeben

Ein Thema von c0mpl3t3 · begonnen am 20. Sep 2009 · letzter Beitrag vom 21. Sep 2009
Antwort Antwort
c0mpl3t3

Registriert seit: 20. Sep 2009
2 Beiträge
 
#1

Hälfte eines Strings ausgeben

  Alt 20. Sep 2009, 19:35
Hi,
ich bin ein ziemlicher Delphi Neuling, wir haben gerade in Informatik damit begonnen.
Nun hab ich folgende Frage:
Aufgabe ist es, einen beliebigen string zu teilen, und die hälfte auszugeben, ich hab das folgendermaßen gelöst:

Delphi-Quellcode:
procedure TProzeduren.halbieren_buttonClick(Sender: TObject);
begin
    text1:=text1_edit.Text;
    text2:=text2_edit.Text;
    laenge1:=Length(text1);
    if odd(laenge1)= true then
      begin
        dec(laenge1);
        laenge1extended:=laenge1;
        laenge1extended:=laenge1extended/2;
      end
    else
      begin
        laenge1extended:=laenge1;
        laenge1extended:=laenge1extended/2;
      end;
    laenge1extended:=Integer(laenge1extended);
    text1:=copy(text1,0,laenge1extended);
    ausgabe1_label.Caption:=text1;
end;
Mir wird dann beim Compiliern der fehler ausgegeben, dass inkompatible Datentypen am Werk wären, durch die if abfrage ist aber ja sichergestellt, dass beim Teilen eine integer Zahl rauskommt.

Ich würd mich freuen wenn ich einen andren Lösungsvorschlag hättet oder meinen Fehler finden würdet.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

Re: Hälfte eines Strings ausgeben

  Alt 20. Sep 2009, 19:41
HI und herzlich willkommen in der DP

also dein Ansatz ist nicht schlecht. Allerdings will Copy() einen Integer-Parameter und der Compiler beharrt darauf, dass er einen bekommt. Das Ergebnis dieser Zeile kann ich mir nicht ganz vorstellen:
laenge1extended:=Integer(laenge1extended); Um das ganze leichter zu machen, empfehle ich dir, gleich eine Ganzzahldivision durchzuführen. Das geht mit DIV und du benötigst auch nicht den Umweg über Real-Typen und Abfragen auf ungerade/gerade Zahlen.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Hälfte eines Strings ausgeben

  Alt 20. Sep 2009, 19:42
Ich würde zur Ermittlung der Mitte Div verwenden, dieses gibt auch einen Integer und keine Float zurück
Markus Kinzler
  Mit Zitat antworten Zitat
c0mpl3t3

Registriert seit: 20. Sep 2009
2 Beiträge
 
#4

Re: Hälfte eines Strings ausgeben

  Alt 20. Sep 2009, 20:28
danke funktioniert
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Hälfte eines Strings ausgeben

  Alt 20. Sep 2009, 23:58
Zitat von c0mpl3t3:
ich bin ein ziemlicher Delphi Neuling, wir haben gerade in Informatik damit begonnen.
Ok, Lektion #1:
Globale Variablen sind böse!!!
Vermeide globale Variablen wann immer möglich.
Delphi-Quellcode:
procedure TProzeduren.halbieren_buttonClick(Sender: TObject);
var // das sind LOKALE Variablen
  text1, text2 : string;
  laenge1 :double;
begin
    text1:=text1_edit.Text;
    text2:=text2_edit.Text;
    laenge1:=Length(text1);
    if odd(laenge1)= true then
.....
end;
fork me on Github
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Hälfte eines Strings ausgeben

  Alt 21. Sep 2009, 07:26
Zitat von sx2008:
Ok, Lektion #1:
Globale Variablen sind böse!!!
Gähn, bitte nicht hier. Globale Variablen sind nicht böse. Sie tun keinem was. Sie sind nur einem reinen OOP-Paradigma im weg, sonst nichts. Delphi selbst produziert übrigens dann ja auch bösen Code.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: Hälfte eines Strings ausgeben

  Alt 21. Sep 2009, 07:34
Ok, dann hier noch Lektion2:

Globale Parameter für Prozeduren sind auch nicht schick.

Was du willst, ist ja übergebenen Text (string) wieder halbiert zurückbekommen (string).
Da bietet sich sowieso eine Funktion besser an.

Delphi-Quellcode:
function HalbierenStr( Str : string ) : string;
begin
  // Die Variable Result ist vordefiniert für den Rückgabewert einer Funktion
  Result := Copy( Str, 1, Length( Str ) DIV 2 );
end;
Der Aufruf der Funktion erfolgt dann wie folgt:

Delphi-Quellcode:
procedure TProzeduren.halbieren_buttonClick(Sender: TObject);
begin
  ausgabe1_label.Caption := HalbierenStr( text1_edit.Text );
end;
cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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:43 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