![]() |
Hälfte eines Strings ausgeben
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:
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.
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; Ich würd mich freuen wenn ich einen andren Lösungsvorschlag hättet oder meinen Fehler finden würdet. |
Re: Hälfte eines Strings ausgeben
HI und herzlich willkommen in der DP :dp: :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:
Delphi-Quellcode:
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.
laenge1extended:=Integer(laenge1extended);
Bernhard |
Re: Hälfte eines Strings ausgeben
Ich würde zur Ermittlung der Mitte Div verwenden, dieses gibt auch einen Integer und keine Float zurück
|
Re: Hälfte eines Strings ausgeben
danke funktioniert :)
|
Re: Hälfte eines Strings ausgeben
Zitat:
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; |
Re: Hälfte eines Strings ausgeben
Zitat:
|
Re: Hälfte eines Strings ausgeben
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:
Der Aufruf der Funktion erfolgt dann wie folgt:
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;
Delphi-Quellcode:
cu
procedure TProzeduren.halbieren_buttonClick(Sender: TObject);
begin ausgabe1_label.Caption := HalbierenStr( text1_edit.Text ); end; Oliver |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 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