AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi 'Ich hab ein Brett vor dem Kopf' oder 'inc(var)'
Thema durchsuchen
Ansicht
Themen-Optionen

'Ich hab ein Brett vor dem Kopf' oder 'inc(var)'

Ein Thema von -lx- · begonnen am 27. Jan 2006 · letzter Beitrag vom 27. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
-lx-
(Gast)

n/a Beiträge
 
#1

'Ich hab ein Brett vor dem Kopf' oder 'inc(var)'

  Alt 27. Jan 2006, 16:45
Hallo.

Entschuldigung bitte für den etwas komischen Titel abe rmir ist nicht wirklich etwas sinnvolles eingefallen, da mein Gefühl für Sinn bereits verloren gegenagen ist - zumindest bei dme Problem was ich euch nun schildere.

Also es geht darum. Man drückt auf eine Button. Darauf wird in ein Memofeld ein Zusätzliches STück Text gehängt und die Beschriftung des Buttons wird geändert. Wenn man nun wieder auf den gleichen Button klickt, wird wiederum ein Stück Text in das MemoFeld geschriben und die Beschriftugn des Textes wieder in den Urzustand zurckversetzt.
ich bekomm e sjedoch nicht gebacken, dass es funktioniert. Warscheinlich ein blöder Fehler und ich werde im Nachhinein sagen "U're a such a fool"

nun gut... hier ist der Quelltext:


Delphi-Quellcode:
procedure TForm1.SBbClick(Sender: TObject);
var VFett :Integer ;
begin
inc(VFett);
If VFett = 1 Then
 begin
   MText.Text:= MText.Text + ' [b] ' ;
   SBb.Caption:= '[/b]' ;
 end
Else If VFett = 2 Then
 begin
   MText.Text:= MText.Text + ' [/b] ' ;
   SBb.Caption:='[b]' ;
 end;
end;

end.



Mit freundlichen Grüßen
  Mit Zitat antworten Zitat
Neotracer64

Registriert seit: 27. Okt 2004
292 Beiträge
 
Delphi 7 Professional
 
#2

Re: 'Ich hab ein Brett vor dem Kopf' oder 'inv(var)'

  Alt 27. Jan 2006, 16:50
Leider ist VFett am Anfang nicht 0, sondern gänzlich undefiniert. Du musst VFett einen konkreten Wert zuweisen.
Der Compiler müsste auch eine Warnung ala "Variable X might not have been initialized" anzeigen.
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#3

Re: 'Ich hab ein Brett vor dem Kopf' oder 'inv(var)'

  Alt 27. Jan 2006, 16:51
Hmmm, ich würde da eher ein Boolean nehmen:

Delphi-Quellcode:
var VFett: Boolean = false;
// Global, sonst "merkt sich" Delphi den Wert nicht ;-)

procedure TForm1.SBbClick(Sender: TObject);
begin
VFett := not VFett;

If VFett Then
 begin
   MText.Text:= MText.Text + ' [b] ' ;
   SBb.Caption:= '[/b]' ;
 end
else
 begin
   MText.Text:= MText.Text + ' [/b] ' ;
   SBb.Caption:='[b]' ;
 end;
end;

end.
Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#4

Re: 'Ich hab ein Brett vor dem Kopf' oder 'inv(var)'

  Alt 27. Jan 2006, 16:56
Das ist doch ganz einfach: Du hast eine lokale Variable VFett in deiner Prozedur. Die hat zu Beginn irgendeinen zufälligen Wert, auf den du 1 addierst (also Zufall + 1, he, he). Manchmal ist das sogar 1 oder 2, meistens aber was anderes.

Deklariere in TForm1 eine private Variable VFett:boolean und initialisiere die in FormCreate mit FALSE.

Die Prozedur so abändern:
Delphi-Quellcode:
procedure TForm1.SBbClick(Sender: TObject);
begin
If not VFett Then
begin
   MText.Text:= MText.Text + ' [b] ' ;
   SBb.Caption:= '[/b]' ;
end
Else
begin
   MText.Text:= MText.Text + ' [/b] ' ;
   SBb.Caption:='[b]' ;
end;
VFett := not VFett
end;
--------------------------------
jaja, zu langsam
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
-lx-
(Gast)

n/a Beiträge
 
#5

Re: 'Ich hab ein Brett vor dem Kopf' oder 'inc(var)'

  Alt 27. Jan 2006, 17:00
Oha... mit so ne schnellen Antworten habe ich garnicht gerechnet!

Jaa da kommt durchaus die Meldung "...konnt enicht initialisiert werden." aber ich wusste nicht was er damit meinte.


Was meinst du mit der Stelle:

VFett := not VFett; und
If VFett Then ???

Bei der IF Abfrage wir ddoch nichts verglichen... !?

Könntets du mir die Stellen erläutern ?




mfg
CYa


/€dit: Ich habe das jetzt so geöst, dass ich die Var VFett als globale Variable mit dem Wert 0 deklariert habe.

Delphi-Quellcode:
procedure TForm1.SBbClick(Sender: TObject);
begin
inc(VFett);
If VFett = 1 Then
 begin
   MText.Text:= MText.Text + ' [b] ' ;
   SBb.Caption:= '[/b]' ;
 end
Else If VFett = 2 Then
 begin
   MText.Text:= MText.Text + ' [/b] ' ;
   SBb.Caption:='[b]' ;
   VFett:= 0 ;
 end;
end;

end.

Globale Var:
Delphi-Quellcode:
var
  Form1: TForm1;
  Satz: String;
  VFett: Integer = 0 ;

So nun abe rnoch eine Frage: Wie stelle ich es an, dass der Curser im Memofeld immer am Textende platziert wird ?



@ tomsel

mit
 VFett:= Vfett + 1 ; habe ich e sja versucht aber es ging komischer weise nicht ....
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#6

Re: 'Ich hab ein Brett vor dem Kopf' oder 'inc(var)'

  Alt 27. Jan 2006, 17:11
Zitat:
@ tomsel

mit
Delphi-Quellcode: markieren
VFett:= Vfett + 1 ;

habe ich e sja versucht aber es ging komischer weise nicht ....
Missverständnis! Im ersten Absatz meines Postings habe ich lediglich deinen Fehler beschrieben, ich meinte nicht, dass du inc(vfett) mit fvett:=vfett+1 ersetzen sollst.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
-lx-
(Gast)

n/a Beiträge
 
#7

Re: 'Ich hab ein Brett vor dem Kopf' oder 'inc(var)'

  Alt 27. Jan 2006, 17:18
Oh ok.

Naja es geht nun.


Aber hab imme rnoch ein Problem.

Wie kann ich denn an der Stelle des Cursors, also da wo er blinkt, z.B. Texte i ein Memofeld einfügen ?

Bzw. wie schaffe iche , dass der Cursor imme rzum Ende eines Textes springt, wenn man einem Memofeld eine neuen Text zufügt?






mfg
Cya
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#8

Re: 'Ich hab ein Brett vor dem Kopf' oder 'inc(var)'

  Alt 27. Jan 2006, 17:20
Also, mit "If Boolean" wird abgefragt, ob der Boolean = true ist. "If Boolean = true" kann jedoch zu Fehlern führen (siehe Tutorial).

Genauso kann dem Boolean das Gegenteil seines Zustandes zugewiesen werden: "Boolean := not Boolean".

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#9

Re: 'Ich hab ein Brett vor dem Kopf' oder 'inc(var)'

  Alt 27. Jan 2006, 19:25
Zitat:
Was meinst du mit der Stelle:

Delphi-Quellcode: markieren
VFett := not VFett;


und
Delphi-Quellcode: markieren
If VFett Then

???

Bei der IF Abfrage wir ddoch nichts verglichen... !?

Könntets du mir die Stellen erläutern ?
Sorry, diese Fragen hab ich ganz übersehen, aber dank ManuMF ist jetzt wohl alles klar? VFett ist ja vom Typ boolean und damit für sich allein ein vollständiger boolescher Ausdruck, da brauchts' keinen Vergleich mehr. Und NOT macht TRUE zu FALSE und umgekehrt, VFett wird also negiert.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#10

Re: 'Ich hab ein Brett vor dem Kopf' oder 'inc(var)'

  Alt 27. Jan 2006, 19:28
Ach ja, der text im Memo: Ich nehm für solche zwecke lieber ein Richedit. Da hat man bessere Manipulationsmöglichkeiten. Mit SelStart, SelEnd, Selection.Collapse und Selection.Text etc. müsstest du eigentlich dein Ziel erreichen können.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz