Autor Beitrag
inv_pacemaker
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 13.02.04 10:08 
Moin Leute,

habe mal einige Fragen zu Delphi:

1. Wie kann ich mehere Variablen in einem Feld ausgeben:
Das wäre meine Vorgehensweise nach TurboPASCAL Art:

edit1.text:= (',var1,', ',var2,');

Aber so klappt es leider nicht, vielleicht kann mir ja Jemand sagen, wei ich mehere Variablen in ein Feld bekomme.

2. Wie kann ich die nachkomma Stellen eines Strings, ... begrenzen
Beispiel TP:

writeln(var1:2:0); // Zwei Stellen OHNE Komma

genau diese Ausgabe brauche ich auch in Delphi.

So das wärs erstmal, wenn ihr mir damit helfen könntet wäre ich euch sehr verbunden.

Danke in Voraus
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Fr 13.02.04 10:13 
2 Variablen machst du so:

ausblenden Delphi-Quelltext
1:
Edit1.Text := var1 + var2;					


Mit den Kommastellen wirst du dir die rundungsfunktionen mal anguggn müssen... (jedenfalls hat ein STRING keine kommastellen) ;-)

aber erstmal :welcome: im DF!

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
inv_pacemaker Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 13.02.04 10:19 
Angenommen var1 ist 10
var2 ist 5 groß

und ich benutze dann die Funktion
ausblenden Delphi-Quelltext
1:
edit1.text:= var1 + var2					


ist edit1.text dann 15 oder 105

Weill es soll ja 105 sein, er soll sie nicht zusammenrechnen sondern 'hintereinander' ausgeben.

Rundungsfunktion uist schlecht, ich will nicht runden die Kommastelle soll einfach nicht ausgegeben werden, wenn ich runde stimmt in dem Falle das ERgebnis nicht mehr.


P.S:Danke fürs Welcome

Gruss

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Fr 13.02.04 10:34 
kommt darauf an was für vaiablentypen du benutzt.
wenn du die variablen als string deklarierst werden die zeichen hintereinander angefügt ( du verbindest also die beiden zeichenketten).

wenn du jedoch integer (also als nummerische variable) denk delphi du willst die beiden addieren und es kommt 15 raus.

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
inv_pacemaker Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 13.02.04 10:51 
Ich muss aber mit Integer bzw real Werten arbeiten, ansonsten kann ich nicht rechnen.

Oder kann ich das irgendwie noch umwandeln?

edit:

ausblenden Delphi-Quelltext
1:
edit7.Text:= floattostr(ergeb1 + ergeb2);					


So macht er doch nen String draus odeR? aber er zeigt mir als ergebnis die 15 ned die 105

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Fr 13.02.04 10:57 
dann mach:
ausblenden Delphi-Quelltext
1:
edit7.Text:= floattostr(ergeb1) + floattostr(ergeb2);					


so macht er jede zahl zu einem "eigenen" string und hängt diese an einander... bei integer geht auch IntToStr

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
inv_pacemaker Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 13.02.04 11:00 
alles klar das funzt.

Nur wie mache ich das jetzt, das er nur höchstens 3 Stellen VOR dem Komma anzeigt, und die Stellen NACH dem Komma ausblendet?

Wenn ich das noch weiss ist es perfekt.
AndreM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Win2k, WinXP, Suse 10
D7 Ent
BeitragVerfasst: Fr 13.02.04 11:31 
Um deine Nachkommastellen zu realisieren guck dir mal die Funktion FormatFloat an! ;)

Hier mal der Delphi-Funktionskopf!

ausblenden Delphi-Quelltext
1:
function FormatFloat(const Format: string; Value: Extended): string;					
inv_pacemaker Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 13.02.04 11:56 
wennich das einfüge läuft das gesamte Prog nicht merh...

Ey ich kann das garnicht verstehen, dass so schwer ist, die Nachkommastellen nicht auszugeben....

In anderen Programmiersprachen ist das docha uch ganz einfach..

Naja vllt. weiss ja nocih einer was..
AndreM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Win2k, WinXP, Suse 10
D7 Ent
BeitragVerfasst: Fr 13.02.04 12:33 
Das ist in Delphi auch nicht schwer, wenn man es mal verstanden hat! ;)
Hier mal nen kleines Beispiel. Ist jedoch nicht getestet, dürfe jedoch klappen! ;)


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm_Haupt.Button_SendClick(Sender: TObject);
  var wert_formatiert : string;
        wert, wert1, wert2 : single;
begin
  wert1 := 100,34;
  wert2 := 86,99;
  wert := wert1 + wert2;
  wert_formatiert:= PChar(FormatFloat('####',wert));
end;


in wert_formatiert ist nun das Ergebnis aus wert1 + wert2 abzüglich der Nachkommastellen gespeichert.

Wenn du z.B. möchest das dein Ergebnis immer als Währung, also mit 2 Nachkommanstellen ausgegeben werden soll müßtest du folgenden Code verwenden.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm_Haupt.Button_SendClick(Sender: TObject);
  var wert_formatiert : string;
        wert, wert1, wert2 : single;
begin
  wert1 := 100,34;
  wert2 := 86,99;
  wert := wert1 + wert2;
  wert_formatiert:= PChar(FormatFloat('####,00',wert));
end;


Hoffe das dir das ein wenig weiterhilft.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 13.02.04 12:38 
Hallo und :welcome:,

zuerst möchte ich dich biten in zukünftigen Codes die Delphi Tags zu nuten, das geht so:
ausblenden Quelltext
1:
[delphi]Dein Quelltext[/delphi]					

Dadurch wird das ganze übersichtlicher.

inv_pacemaker hat folgendes geschrieben:
Ey ich kann das garnicht verstehen, dass so schwer ist, die Nachkommastellen nicht auszugeben....


Zu deinem Problem: Es gibt viel möglichkeiten den Nachkommawert los zu werden. Die gänigsten sind Trunc und Round. Trunc schnedet die nachkommastellen einfach ab und Round rundet sie nache dem Amerikanischen "Banker’s Rounding" verfahren, nicht zu verwechseln mit unseren Kaufmännischen runden. Das ergebnis vom Typ Integer musst du noch in einen String Konvertieren, damit du es ausgeben kannst. Dafür kannst du IntToStr verwenden.

Anwenden kannst du die Befehle so:

ausblenden Delphi-Quelltext
1:
edit1.text := IntToStr(Trunc(var1 + var2));					

bzw.
ausblenden Delphi-Quelltext
1:
edit1.text := IntToStr(Round(var1 + var2));					


//Edit: Der Befehl format ist flexibler als das ober vorgestellte FormatFloat ein Blick in die Delphi Hilfe lohnt sich.

Gruß
Klabautermann
inv_pacemaker Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 13.02.04 13:45 
Jo alles klar benutze das jetzt. Deine Round funktion funzt astrein.

Bin soweit zufrieden mit meinem PRog, wenn cih noch was habe melde ich mich :D
inv_pacemaker Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 13.02.04 14:35 
Noch eine Sache:

Kann ich das irgendwie machen, dass er mir ein ERgebnis immer auf zwei Stellen ausgibt

Also wenn ein Ergebnis 3 ist, dass er denn 03 augibt, aber bei einer Zwestelligen, soll er sie auch nur zweistellig ausgeben

Ist doch sicher möglich oder.

Danke nochmal für eure ganzen Antworten
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Fr 13.02.04 15:10 
Wenn dus mit Strings lösen willst:

ausblenden Delphi-Quelltext
1:
if Length(ergebnis) = 1 then ergebnis := '0' + ergebnis;					


Bei den Format Funktionen weiss ich nicht obs geht...

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
inv_pacemaker Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 13.02.04 15:38 
ausblenden Delphi-Quelltext
1:
if Length (floattostr(ergeb2)) = 1 then (floattostr(ergeb2)) := '0' + (floattostr(ergeb2));					


[Fehler] koordinaten.pas(69): Der linken Seite kann nichts zugewiesen werden

Und so:

ausblenden Delphi-Quelltext
1:
if Length(ergeb2) = 1 then ergeb2 := '0' + ergeb2;					


[Fehler] koordinaten.pas(69): Inkompatible Typen

Die Variable ergeb2 ist als real definiert.
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Fr 13.02.04 15:46 
Chatfix hat folgendes geschrieben:
Wenn dus mit Strings lösen willst


Real ist kein String....

Wenn du es im Edit ausgibst könntest du es so machen

ausblenden Delphi-Quelltext
1:
if Length(Edit1.Text) = 1 then ...					

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Fr 13.02.04 15:55 
inv_pacemaker hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
if Length (floattostr(ergeb2)) = 1 then (floattostr(ergeb2)) := '0' + (floattostr(ergeb2));					

so soltle es gehen:
ausblenden Delphi-Quelltext
1:
ergeb2:=strtofloat('0'+floattostr(ergeb2));					

allerdings erkenne ich den sinn des ganzen nicht, weil die führende null eh wieder gelöscht wird.. :?
wilslt du die hinten anhängen??
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 13.02.04 17:42 
Hallo,

wenn du Ergebnisse als Formatieten Text Ausgeben willst, dann solltest du die funktion Format benutzen.

Hier kannst du solche angaben im Format String (in der Delphi Hilfe nachschlagen) einstellen.

Dass kann dann so aussehen:
ausblenden Delphi-Quelltext
1:
  Label1.Caption := Format('%.2d', [Round(var1 + var2)]); // Integer Variable mit zwei Stellen ausgeben z.B. 03					


Hierbei sind die Eckigen Klammern wichtig.

Gruß
Klabautermann


Zuletzt bearbeitet von Klabautermann am Fr 13.02.04 18:09, insgesamt 1-mal bearbeitet
rokdd
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 329

Win XP
D6
BeitragVerfasst: Fr 13.02.04 18:00 
Hallo,
zu dem 1.problem mit dem umwandeln kannst du dir auch mal die function floattostrf anschauen damit wandelst du den float um und gibst gleichzeitig noch dezimalstellen,... an.

Rokdd
inv_pacemaker Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 14.02.04 16:35 
Jo danke nochmal für die weiteren Antworten, aber ich habe das Problem anders gelöst.

Habs einfach mit editX.Text gemacht...

Der Sinn daran, dass da immer eine '0' stehen sollte lag darin, dass das Ergebnis dieses Programms eine Angabe in Minuten und Sekunden ist, d.h. wenn als Ergenis 7, 5, 9 rausgkommt soll er ja 07:05:09 ausgeben.

Logisch oder :D ?

Gruss
pacemaker