Autor Beitrag
20:30
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mi 04.07.12 01:23 
So erste Frage:

Wie (Falls möglich) kann ich bei if-Abfragen zwei Varianten machen kann.

Ungefähr so:

ausblenden 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:

ausblenden 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.

ausblenden 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

ausblenden Quelltext
1:
2:
3:
4:
5:
Test1                    True
Test2                    True
SuperLangerTest1         True
NochLängererText2        True
KurzerText1              True


Mit Tabs geht's nicht.

Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mi 04.07.12 01: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:
ausblenden Delphi-Quelltext
1:
if (1 = 1and (2 = 2and (3 = 3then					


Frage 2:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var
  LineID: Integer;
Memo1.Lines.Add('Text'); //Zeile einfügen
LineID := Memo1.Lines.Count-1//ID der Zeile speichern
Memo1.Lines[LineID] := 'anderer Text'//Wert der Zeile ändern


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.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure AddLine(aText: Stringconst aValue: Boolean; const aLength: Integer);
begin
  while Length(aText) < aLength do  //solange die Länge des Textes gleiner als die gewünschte Länge ist
    aText := aText + ' ';           //füge dem String ein Leerzeichen an
  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 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.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^

Für diesen Beitrag haben gedankt: 20:30
20:30 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mi 04.07.12 02: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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mi 04.07.12 02:26 
ausblenden 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.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^

Für diesen Beitrag haben gedankt: 20:30
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mi 04.07.12 03:29 
Ach user profile iconBergmann89, du solltest doch das wissen :roll:


user profile icon20: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.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."

Für diesen Beitrag haben gedankt: 20:30
rizla
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 417
Erhaltene Danke: 2

XP
FPC mit Lazarus
BeitragVerfasst: Mi 04.07.12 03:33 
user profile icon20:30 hat folgendes geschrieben Zum zitierten Posting springen:
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 ;)

_________________
if you have what they want - they'll find a way to take it (bruce sterling)
WOW - 10 JAHRE Mitglied beim Delphi-Forum. Wie die Zeit vergeht, Freunde.

Für diesen Beitrag haben gedankt: 20:30
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 174
Erhaltene Danke: 43



BeitragVerfasst: Mi 04.07.12 17:54 
Schreibe deinen Code übersichtlich und wartbar, Byte kannst du an anderer Stelle sparen.
ausblenden 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
ausblenden 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;