PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nijis-Delphi-Frage-Thread



Niji-chan
23.12.2005, 09:53
Hi!

Ich möchte einen Terminplaner machen, der mit mir spricht. Mein momentanes Problem ist die Ausgabe des gewählten Datums.

Ich habe nun einen "MonthCalendar" genommen. Darauf kann man ja wie wild herum klicken. Jetzt soll, wenn ich ein Datum anklicke, dieses in einem "Edit"-Feld erscheinen. Womit bekomme ich es aber denn jetzt übergeben?

Meine Anfänge:

Edit1.Text := MonthCalendar1. ;
Da muss natürlich irgendwas hinter den Punkt... aber was?

(weitere Fragen werden mit der Zeit folgen ;) )

mfg

o_O
23.12.2005, 10:31
Naja du musst das Datum in einen String umwandeln und diesen der Editbox übergeben ...:


Edit1.Text := DateToStr(MonthCalendar1.Date);

Das wars auch schon !

Niji-chan
23.12.2005, 11:43
ich bin ja soo doof...^^
sowas müsste ich langsam echt schon können...
danke

wie kann man im Kalender bestimmte Tage fett makieren? habs in der Hilfe nich verstanden..

edit: jubel: 777 = Lucky 7 :)

o_O
23.12.2005, 12:20
Wie meinste das "Markieren " rot umkreist oda blau selektiert ???

Niji-chan
23.12.2005, 14:19
so fett gedruckt oder ähnliches...

rot umkreist ist ja nur der aktuelle Tag - das soll auch so bleiben...

Ich wollte halt ein paar Feiertage fest makieren - vorrausgesetzt, dass das überhaupt irgendwie funktionuckelt

o_O
23.12.2005, 14:28
Und in der Hilfe haste nichts gefunfen <_> ich hab mal gesucht aber nix gefunden ...<ö< hmm ich hab auch mal nen bissel rumprobiert aber nichs tolles rausgefunden ..muss noch mal schaun xD

Niji-chan
23.12.2005, 14:37
Ich schätze mal, dass es mit einer neuen Komponenten, die das Kind von TMonthCalendar wäre, machbar sein könnte. Aber das ist mir dann doch zu umständlich.

Beschäftige ich mich dann mal besser mit der Frage, wie ich Daten auf ein Datum abspeichern kann.
Diese sollen dann auch einfachst abzurufen sein, indem man einfach im Kalender auf irgend n Datum klickt, wenn dann schon etwas vorhanden ist, wird das angezeigt.

Reicht dafür ne normale *.txt ?

Crash-Override
23.12.2005, 15:08
Ja, aber wäre unschön mit so vielen Text-Dateien. Datenbanken sind besser. Google mal, dafür gibts massig Tuts.

Niji-chan
27.12.2005, 14:18
soa,... für ein anderes Projekt muss ich jetzt Dateinamen auslesen

folgendes:
in einem Ordner sind lauter Bilddateien
z.B. kata_n.bmp ; hira_ki.bmp ; kata_o.bmp
usw.
ich muss einzelne Wortfetzen aus den Dateinamen ziehen, um genauer zu sein einmal die ersten 4 Buchstaben und dann das, was zwischen _ und . steht.
Ich lasse vom Programm eine zufällige Datei aufgreifen (hoffentlich bekomme ich das hin), lasse sie im Programm darstellen, der Nutzer muss dann "raten", was zwischen _ und . steht.
Dabei kann der Nutzer wählen zwischen 3 verschiedenen Varianten:
1. nur die mit hira am Anfang
2. nur die mit kata am Anfang
3. die mit hira und die mit kata am Anfang

...

Niji-chan
08.01.2006, 19:32
hab das obige Problem jetzt anders gelöst
..


new one:
Wie kann man in einer Tabelle suchen?
(db)

die Suchergebnisse würde ich dann gerne in einer neuen Liste ausgeben lassen (memo), bzw. soll es möglich sein einzelne Ergebnisse dann zu laden (in einem neuen TForm-Objekt)

o_O
09.01.2006, 11:04
Dafür gibts glaub keine vorgefertigte Funtion oda so .... ich denke das musst du selbst schreiben, ich denke mir das so :


function Search(s:String);
Var Wort,Text:String;
a,B:Integer;
begin
Wort := s;
b := Tabelle.Count;
For a := a to b do
begin
Text := Tabelle(a).TEXT;
if wort = Text then

ShowMessage('Wort gefunden');

end;
end;


Najo sollte so gehen... musst dann halt noch anpassen aber das Schema sollte stimmen... wenn net dann sags =P


<_> Könnte es sein das der code da oben ziemlicher mist ist ? Wann hab ich den den geschrieben -.- arrr

Niji-chan
11.02.2006, 14:45
thx

new proj - new prob:

Also, jetzt habe ich so ein paar Fehlermeldungen bezüglich einer Umwandlung von Variablen (StrToInt).
Folgend ein Ausschnitt des Quellcodes:
var
Form1: TForm1;
gramm, fett, kcal, ergebnis: String;

procedure TForm1.Button1Click(Sender: TObject);
begin
//Zunächst wird geprüft, ob die Angaben des Nahrungsmittels
//für je 100 Gramm gedacht sind. Wenn dem so ist, wird nach
//der LowFett30-Formel der Fettgehalt berechnet.
//Falls die Angaben nicht für 100 g angegeben sind, werden
//die Variablen zunächst umgerechnet und danach wird der
//Fettgehalt berechnet.

gramm := StrToInt(Edit1.Text);
fett := StrToInt(Edit2.Text);
kcal := StrToInt(Edit3.Text);
if (gramm = 100) then
begin
ergebnis := (fett * 9 * 100) / kcal;
end
else
begin
fett := (fett / gramm) * 100;
kcal := (kcal / gramm) * 100;
ergebnis := (fett * 9 * 100) / kcal;
end
end;

//Das Ergebnis wird in einem neuen Formular dargestellt.

Form2.Label2.Caption := IntToStr(ergebnis);

if (ergebnis <= 30) then
begin
Form2.Image1.Picture.LoadFromFile('img\erlaubt.bmp');
end
else
begin
Form2.Image1.Picture.LoadFromFile('img\nerlaubt.bmp');
end
end;

Form2.Show;
end;


Soa, String und Integer harmonieren noch nicht zusammen und zudem ist wohl die Picture-Imagezuweisung noch nicht korrekt.

Ineluki
11.02.2006, 22:43
Wenn du
gramm, fett, kcal, ergebnis: String; als String definierst, darfst du dich nicht wundern, wenn du darin keine Zahlen speichern kannst.

Die Bildzuweisung ist allerdings korrekt.

Niji-chan
12.02.2006, 00:10
ok, ich hab es jetz soweit zum laufen bekommen.

jetzt möchte ich aber noch mit einem try...except die Division durch 0 verhindern. wie mach ich das?
ich mein,
try
if (gramm <> 100) then
begin
fett := (fett / gramm) * 100;
kcal := (kcal / gramm) * 100;
end;
except
Form3.Label1.Caption := 'Es ist ein Fehler aufgetreten.';
Form3.show;
Form1.Enabled := False;
end;
ergebnis := round((fett * 9 * 100) / kcal);
ruft schonmal das eigene Fehlerfenster hervor, es kommt aber auch noch die Fehlermeldung vom Compiler. ich hab schon versucht, die irgendwie abzustellen - bisher jedoch erfolglos

Ineluki
12.02.2006, 04:37
jup delphi zeigt die an, wenn mans aus der ide startet. separat gestartet sollten aber keine fehlermeldeungen kommen

Niji-chan
12.02.2006, 20:13
---------------------------
Lowfettcalc
---------------------------
Ungültige Gleitkommaoperation.
---------------------------
OK
---------------------------

Die Fehlermeldung tritt dann aber trotz allem auf.

Ineluki
13.02.2006, 05:23
tritt die exception vielleicht auf, weil in der ausserhalb des Exceptionblocks stehenden Anweisung

ergebnis := round((fett * 9 * 100) / kcal);

kcal noch auf Null gesetzt ist ? Wenn eine Division durch Null auftritt, dann wird ja der Wert von kcal nicht geaendert ... Probiers mal, die Zeile mit in den Try Block zu schreiben.

Laut Delphi Hilfesystem ist dein Code correkt. Du koenntest natuerlich auch explizit die Division durch Null Exception abfangen, das wuerdest du so machen ...



try

X := Y/Z;
except
on EZeroDivide do
begin
...
end;
end;

Niji-chan
13.02.2006, 13:15
gramm := StrToFloat(Edit1.Text);
fett := StrToFloat(Edit2.Text);
kcal := StrToFloat(Edit3.Text);
steht vor dem vorigen Code.

hab jetz
ergebnis := round((fett * 9 * 100) / kcal); noch in die try-formel gepackt.
klappt jetz alles, so wie ich es haben möchte :)