Autor |
Beitrag |
xilos
      
Beiträge: 59
|
Verfasst: Di 28.11.06 18:33
hallo...ich habe mal wieder ein problem und zwar habe ich ein labelfeld und darin sind "..." vorhanden. darin soll jetzt aber ein ergebniss aus einem editfeld übernommen werde!!!
(die punkte in dem satz sollen in das ergebniss umgewandelt werde, nicht der komplette satz ^^)
geht das mit irgend so ner funktion die format string heißt??
und wenn ja...wie geht das?? :S
|
|
Coder
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Di 28.11.06 19:28
Wenn ich dich richtig verstanden habe variiert die Anzahl der Punkte im Label
und du willst so viele Buchstaben im Label anzeigen wie Punkte vorhanden sind.
Mit Length zählst du die Zeichen im Label.
Mit Copy kopierst du einen Teil des Textes aus dem Editfeld.
Zu den Funktionen findest du im Forum und in der Delphi Hilfe Beispiele.
MfG
|
|
raiguen
      
Beiträge: 374
WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
|
Verfasst: Di 28.11.06 21:48
Moin
Angenommen, das Label (bzw dessen Text) sieht so aus:
Quelltext 1:
| Du hast ... Punkte erreicht. |
dann kannst du mithilfe der Format()-Funktion bspw. das Ergbenis aus dem Editfeld so 'einbauen':
Delphi-Quelltext 1: 2: 3: 4:
| Label1.Caption := Format('Du hast %s Punkte erreicht', [Edit1.Text]); Label1.Caption := Format('Du hast %d Punkte erreicht', [Ergebnis]); |
Der 'Platzhalter' %s (für eine StringVariable) bzw %d (für eine ganzzahlige=IntegerVariable) wird durch den Ausdruck in der []-Klammer ersetzt.
|
|
Danny W.
      
Beiträge: 296
Windows XP, WIN 2000
Delphi 2005 PE
|
Verfasst: Mi 29.11.06 10:43
Ich hab das bis jetzt immer so gemacht:
Delphi-Quelltext 1:
| Label1.Caption := 'Du hast '+Edit1.Text+' Punkte erreicht'; |
Damals mit den alten Versionen ging es noch so:
Delphi-Quelltext 1:
| Label1.Caption := 'Du hast ',Edit1.Text,' Punkte erreicht'; |
Mittlerweile wurde das "," durch ein "+" ersetzt =)
mfG,
Danny
_________________ "Ich find den Fehler nicht. Der Artist wird immer als "Syntax Error" gezeigt  "
"Ach verdammt, der Artist heißt wirklich "Syntax Error" xD"
Zuletzt bearbeitet von Danny W. am Mi 29.11.06 16:09, insgesamt 1-mal bearbeitet
|
|
xilos 
      
Beiträge: 59
|
Verfasst: Mi 29.11.06 15:35
wieso machst du ganz am ende eine klammer??
wo muss ich das denn einfügen auf de button den ich klicken will oder wo hin?? :S
|
|
xilos 
      
Beiträge: 59
|
Verfasst: Mi 29.11.06 15:40
okay das hab ich hinbekommen ^^....(mit der lösung von raiguen...aber noch mal eine frage dazu...
er soll 2 felder zusammenrechnen..muss ich dann die beiden felder erst in strtoint umwandeln oder geht das auch ander?? weil sonst schreibt er sie ja hintereinander
|
|
Danny W.
      
Beiträge: 296
Windows XP, WIN 2000
Delphi 2005 PE
|
Verfasst: Mi 29.11.06 16:07
Die Klammern dahinter waren keine Absicht..hab das einfach so hingeschreiben ohne zu testen
Ich glaube du solltest dich nochmal mit den Grundlagen befassen.. denn was willst du mit einem strtoint wenn du z.B. float hast?
Aber angenommen du hast 2 edit felder und willst per button beide addieren...
Delphi-Quelltext 1:
| ergebnis:=strtoint(edit1.text)+strtoint(edit2.text); |
Natürlich auch nur wenn du ganze zahlen in den feldern stehen hast
So steht in der Variable "ergebnis" der integer wert, der sich aus dem ergebnis ergibt.
mfG,
Danny
_________________ "Ich find den Fehler nicht. Der Artist wird immer als "Syntax Error" gezeigt  "
"Ach verdammt, der Artist heißt wirklich "Syntax Error" xD"
Zuletzt bearbeitet von Danny W. am Mi 29.11.06 16:10, insgesamt 1-mal bearbeitet
|
|
raiguen
      
Beiträge: 374
WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
|
Verfasst: Mi 29.11.06 16:09
Moin
Wenn du mehrere EingabeFelder (Edit) hast,diese zusammengezählt und das Ergebnis angezeigt werden soll, dann gibt es zwei Möglichkeiten:
1.zunächst eine lokale Integer-Variable, in der das Ergebnis aufgenommen und anschließend über einen formatierten String ausgegeben wird:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure ErgebnisAusgeben; var Ergebnis: Integer; begin Ergebnis := StrToIntDef(Edit1.Text, 0) + StrToIntDef(Edit2.Text, 0) + StrToIntDef(Edit3.Text, 0);
LabelErgebnis.Caption := Format('Du hast %d Punkte erreicht', [Ergebnis]); end; |
2. Ergebnis aus den einzelnen EditFeldern direkt im Format() ausrechnen und anzeigen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure ErgebnisAusgeben; begin LabelErgebnis.Caption := Format('Du hast %d Punkte erreicht', [StrToIntDef(Edit1.Text, 0) + StrToIntDef(Edit2.Text, 0) + StrToIntDef(Edit3.Text, 0)]); end; |
|
|
Danny W.
      
Beiträge: 296
Windows XP, WIN 2000
Delphi 2005 PE
|
Verfasst: Mi 29.11.06 16:13
raiguen: Mich würde interessieren wie du einen String mit mehreren Variablen ausgibst.
Delphi-Quelltext 1:
| string := 'das ist der '+zahl1+' Text, der sich aus '+zahl2+' Worten ergibt wobei '+zahl3+' davon Variablen sind'; |
Wie würdest du das lösen?
_________________ "Ich find den Fehler nicht. Der Artist wird immer als "Syntax Error" gezeigt  "
"Ach verdammt, der Artist heißt wirklich "Syntax Error" xD"
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 29.11.06 16:23
Delphi-Quelltext 1:
| s := Format('das ist der %d Text, der sich aus %d Worten ergibt wobei %d davon Variablen sind', [zahl1, zahl2, zahl3]); |
|
|
Danny W.
      
Beiträge: 296
Windows XP, WIN 2000
Delphi 2005 PE
|
Verfasst: Mi 29.11.06 16:32
Hat das Vorteile das so zu lösen? Ich meine...ich würde da noch spätestens 5 Variablen durcheinander kommen 
_________________ "Ich find den Fehler nicht. Der Artist wird immer als "Syntax Error" gezeigt  "
"Ach verdammt, der Artist heißt wirklich "Syntax Error" xD"
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mi 29.11.06 16:43
musst ihn halt dann zusammensetzen xD
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 29.11.06 16:51
Mantis1987 hat folgendes geschrieben: | Hat das Vorteile das so zu lösen? Ich meine...ich würde da noch spätestens 5 Variablen durcheinander kommen  |
Zum einem finde ich es übersichtlicher und zum anderen sollte man Zeichenketten sowieso nicht hard coden. Willst du deine Anwendung später mal übersetzen, musst du dir überall im Quellcode deine Zeichenketten zusammensuchen und übersetzen. Und ich garantiere dir, dass du mindestens eine vergisst oder übersiehst. Zum dem kann es niemand anders tun, da du teilweise auch, wegen der Satzstellung, deine Zeichenketten anders zusammensetzen musst.
Deswegen packe ich alle meine Stringkonstanten in eine extra Unit oder Include-Datei und definiere sie dort als Konstanten oder als Ressourcenstrings (Ressourcenstrings werden als Zeichkettentabellen in die Exe mit einkompiliert, so dass man sie auch noch nachträglich mit einem Ressourceneditor editieren könnte.):
Delphi-Quelltext 1: 2:
| resourcenstring rsMeineZeichenkette = 'das ist der %d Text, der sich aus %d Worten ergibt wobei %d davon Variablen sind'; |
Delphi-Quelltext 1:
| s := Format(rsMeineZeichenkette, [zahl1, zahl2, zahl3]); |
Jetzt hast du alles übersichtlich zusammen und kannst die Datei sogar einer Freundin zum Übersetzen geben. Sie muss nur wieder die Platzhalter an der entsprechenden Stelle im Satz einbauen. Du tauscht nur die Datei aus und kompilierst es neu. Fertig.
|
|
xilos 
      
Beiträge: 59
|
Verfasst: Mi 29.11.06 17:43
noch mal ne frage raiguen^^
was bedeutet dieses DEf hinter StrToInt???
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mi 29.11.06 18:19
_________________ Na denn, dann. Bis dann, denn.
|
|