Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Dreilelei Fragen
20:30 - Mi 04.07.12 00:23
Titel: Dreilelei Fragen
So erste Frage:
Wie (Falls möglich) kann ich bei if-Abfragen zwei Varianten machen kann.
Ungefähr so:
Delphi-Quelltext
1: 2: 3: 4:
| if if Boolean1 then Funcrion1(Meh, VMeh) = 0 else Function1(Meh2, VMeh2) = 0 then begin Quellcode bleibt hier gleich. end; |
Oder so:
Delphi-Quelltext
1:
| if Function1(if Boolean1 then Meh, VMeh else Meh2, VMeh2) = 0 then |
Ich möchte nicht alles unten reinkopieren, da ein Haufen Zeilen da drinnen stehen.
Zweite Frage:
In einem MemoFeld soll nachhinein in eine selbe Zeile geschrieben werden.
Delphi-Quelltext
1: 2:
| M_Meh.Lines.Add(ZKMeh.Attr1); M_Meh.SelbeLine.Add(ZkeMeh.Attr2); |
Dritte Frage:
Wie kann ich bei der 2. Frage, bzw. überhaupt, das beigefügte in ein Level rücken
Quelltext
1: 2: 3: 4: 5:
| Test1 True Test2 True SuperLangerTest1 True NochLängererText2 True KurzerText1 True |
Mit Tabs geht's nicht.
Moderiert von
Martok: Delphi-Tags hinzugefügt
Bergmann89 - Mi 04.07.12 00:49
Hey,
Frage 1:
Eine if-Anweisung erwartet einen Boolean. Das Ergebnis bei einem Vergleich ist ein Boolean. Booleans kann man mit logischen Operatoren (and, or, not, xor, ...) verknüpfen:
Delphi-Quelltext
1:
| if (1 = 1) and (2 = 2) and (3 = 3) then |
Frage 2:
Delphi-Quelltext
1: 2: 3: 4: 5:
| var LineID: Integer; Memo1.Lines.Add('Text'); LineID := Memo1.Lines.Count-1; Memo1.Lines[LineID] := 'anderer Text'; |
Frage 3:
Dazu musst du einfach ein paar Leerzeilen an den richtigen Stellen einfügen. Das geht aber nur bei Schriftarten wie z.B. Courier New, da dort alle Buchstaben die selbe Breite haben. Bei anderen Schriftarten ist das nicht so einfach.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure AddLine(aText: String; const aValue: Boolean; const aLength: Integer); begin while Length(aText) < aLength do aText := aText + ' '; if (aValue) then Memo1.Lines.Add(aText + 'true') else Memo1.Lines.Add(aText + 'false'); end; |
Es scheint mir so, das du sehr große Wissenslücken bei den Grundlagen hast. Vlt wäre es angbrachter noch einmal ein Tutorial über Delphi durchzuarbeiten. Da kann ich das von
Christian Stelzmann [
http://www.christian-stelzmann.de/artikel/CrashkursReloaded/] empfehlen. Außerdem komtm mir das mit deinen haufen if-Abfragen etwas komisch vor. Wie genau sieht das denn aus? Das geht sicher einfacher. Normelerweiße hat man nie mehr als 3-4 Abfragen in einer Anweisung.
MfG Bergmann.
20:30 - Mi 04.07.12 01:15
Nah, an den Grundlagen (Zumindest die im Turorial) haperts eigentlich nicht. Nur die Erfahrung machts, dass ich lieber nach was Bytesparendere Methoden nachfrage.
Mit der If-Abfrage habe das ich nicht so gemeint (Okay, meine Beschreibeung war auch sehr ungenau).
and und or suche ich nicht.
Das Problem liegt bei den Variablen der Funktion innerhalb der If-Funktion, die geändert werden sollen, wenn ein andere boolean-Wert wahr/falsch ist.
Bergmann89 - Mi 04.07.12 01:26
Delphi-Quelltext
1:
| if (Boolean1 and (Function1(Meh, VMeh) = 0)) or (not Boolean1 and (Function1(Meh2, VMeh2) = 0))) then |
da du hier einmal
Boolean1 und einmal
not Boolean1 benutzt, hast du einen wechselseitigen Ausschluss. Heißt, wenn Boolean1 wahr ist, dann wird Function1(Meh, VMeh) ausgeführt und ausgewertet. Wenn Boolean1 falsch ist, dann wird Function1(Meh2, VMeh2) ausgeführt und ausgewertet.
Martok - Mi 04.07.12 02:29
Ach
Bergmann89, du solltest doch das wissen :roll:
20:30, bitte stell nicht mehere thematisch nicht zusammenhängende Fragen in einem Thread. Das führt (wie man hier schön sehen kann) zu ziemlichem Chaos, worum es denn grade geht. Eröffne für jede Frage einen Thread (in der passenden Sparte), unsere Datenbank kann das ab :zustimm:
Da
einer hier schon angefangen hat zu antworten, schließe ich hier mal nicht gleich sondern lege moderativ fest, dass wir uns hier
nur noch um den Vergleich kümmern. Bitte also für die Memo-Frage ein neues Thema erstellen.
rizla - Mi 04.07.12 02:33
20:30 hat folgendes geschrieben : |
| Nah, an den Grundlagen (Zumindest die im Turorial) haperts eigentlich nicht. Nur die Erfahrung machts, dass ich lieber nach was Bytesparendere Methoden nachfrage. |
Dann nutze Assembler! Spart garantiert jede Menge ;)
Blup - Mi 04.07.12 16:54
Schreibe deinen Code übersichtlich und wartbar, Byte kannst du an anderer Stelle sparen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| if Boolean1 then ZwischenErgebnis := Function1(Meh, VMeh) else ZwischenErgebnis := Function1(Meh2, VMeh2);
if ZwischenErgebnis = 0 then begin Quellcode bleibt hier gleich. end; |
oder
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| if Boolean1 then begin m := Meh; v := VMeh; end else begin m := Meh2; v := VMeh2; end;
if Function1(m, v) = 0 then begin Quellcode bleibt hier gleich. end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!