3 fragen von delphi-neuling

hi mitnand,
bin relativ firm in visualbasic, aber neu in delphi …

ich hab 3 fragen:

  1. wie kann man in delphi am einfachsten eine zahl auf ganzzahligkeit überprüfen?
    (ich hab mit
    „zahl2 := int(zahl1)“
    und dann
    „if zahl1 zahl2 then“ usw.
    versucht den ganzzahlanteil zu berechnen, aber er schiebt mir da fehlermeldungen: „ist kein gültiger Gleitkommawert“)

  2. wie schreibt man am besten dem user eine meldung zur bestätigung? (unter visualbasic ein „msgbox“)
    hab in der hilfe gesucht, aber nix gefunden.

  3. wie baut man in delphi eine if-then-else-struktur mit mehr als 1 zeile pro verzweigung?
    (meine delphi-hilfe behauptet, wenn ichs richtig verstehe, dass nur jeweils eine zeile möglich ist)

danke im voraus
michael

  1. wie schreibt man am besten dem user eine meldung zur
    bestätigung? (unter visualbasic ein „msgbox“)
    hab in der hilfe gesucht, aber nix gefunden.

Showmessage(‚Meldung‘);
Wenn aber er was bestätigen soll (Ja, Nein) dann muss man das anders machen.

  1. wie baut man in delphi eine if-then-else-struktur mit mehr
    als 1 zeile pro verzweigung?
    (meine delphi-hilfe behauptet, wenn ichs richtig verstehe,
    dass nur jeweils eine zeile möglich ist)

Mit

begin Anweisung end;

Hallo,

ich hab 3 fragen:

  1. wie kann man in delphi am einfachsten eine zahl auf
    ganzzahligkeit überprüfen?
    (ich hab mit
    „zahl2 := int(zahl1)“
    und dann
    „if zahl1 zahl2 then“ usw.
    versucht den ganzzahlanteil zu berechnen, aber er schiebt mir
    da fehlermeldungen: „ist kein gültiger Gleitkommawert“)

wäre gut zu wissen, als was du z1 und z2 deklariert hast. Als double oder als integer?

probiers mal hiermit:

if frac(z1) = 0 then showmessage(‚ganz‘) else showmessage(‚bruch‘);

  1. wie schreibt man am besten dem user eine meldung zur
    bestätigung? (unter visualbasic ein „msgbox“)
    hab in der hilfe gesucht, aber nix gefunden.

außer showmessage geht auch noch

MessageDlg
MessageDlgPos
MessageDlgPosHelp

sind etwas komplizierter aber auch flexibler (zB Auswahl der angezeigten Buttons und unterschiedliche Reaktion auf unterschiedliche Buttons möglich).

  1. wie baut man in delphi eine if-then-else-struktur mit mehr
    als 1 zeile pro verzweigung?
    (meine delphi-hilfe behauptet, wenn ichs richtig verstehe,
    dass nur jeweils eine zeile möglich ist)
if [Bedingung] then begin
 [Anweisung];
 [Anweisung];
 [Anweisung];
 [Anweisung];
 [Anweisung];
end
else begin
 [Anweisung];
 [Anweisung];
 [Anweisung];
 [Anweisung];
 [Anweisung];
end;

Gruß, Niels

hi,

  1. wie kann man in delphi am einfachsten eine zahl auf
    ganzzahligkeit überprüfen?
    (ich hab mit
    „zahl2 := int(zahl1)“
    und dann
    „if zahl1 zahl2 then“ usw.
    versucht den ganzzahlanteil zu berechnen, aber er schiebt mir
    da fehlermeldungen: „ist kein gültiger Gleitkommawert“)

wäre gut zu wissen, als was du z1 und z2 deklariert hast. Als
double oder als integer?

double

if [Bedingung] then begin
[Anweisung];
[Anweisung];
[Anweisung];
[Anweisung];
[Anweisung];
end
else begin
[Anweisung];
[Anweisung];
[Anweisung];
[Anweisung];
[Anweisung];
end;

danke!

m.

Hi Namensvetter,

Frage 2 und 3 wurden dir ja schon beantwortet.

Zu deiner Frage 1:

ich nehme mal an, die Deklaration deiner Variablen zahl1 und zahl2 sieht etwa so aus

var Zahl1, Zahl2 : Double;

Dann sollte deine Lösung

Zahl2 := Int(Zahl1);
if Zahl1 Zahl2 then

funktionieren, du kannst sie noch etwas vereinfachen

if Zahl1 Int(Zahl1) then

Poste doch mal die ganze Funktion oder Prozedur, dann kann man dir besser helfen.

Gruß

Michi

Hallo

Eine einfache Meldung mit OK-Button erzeugst du mit Showmessage, eine vielseitigere Möglichkeit ist Application.MessageBox

Schau dazu mal in die Hilfe.

cu

hi,

Eine einfache Meldung mit OK-Button erzeugst du mit
Showmessage, eine vielseitigere Möglichkeit ist
Application.MessageBox

Schau dazu mal in die Hilfe.

die hilfe … das ist so ein kapitel für sich. ich find sie grottenschlecht; ich hab noch nie bei halbwegs professionellen produkten eine derart abseitig inkompetente hilfe erlebt. du fragst nach einem begriff: er ist scheinbar nicht vorhanden, oder du kriegst eine seite, die offensichtlich nur peripherst mit dem thema zu tun hat.

nehmen wir den begriff „messagebox“. im index gibt es ihn nicht. mit „Suchen“ findest du 3 belege, von denen 2 nix helfen. der dritte enthält u.a. eine syntaxbeschreibung, aber nur „beispielsweise“, das ganze unter dem titel „Kombination von Delphi-Strings und nullterminierten Strings“, der menschen, die die syntax des befehls mit ihren fakultativen varianten suchen, nun nicht gerade als erstes einfallen muss.

ich habs ja sonst ned so mit micro$oft und so, aber was sich borland mit dieser hilfe geleistet hat, sucht echt seinesgleichen.

m.

Hallo

Das hasst du sehr schön gesagt. Aber bei mir (Delphi 3) gibt es im Index wider Erwarten einenEintrag MessageBox. Aber versuchs mal im Index mit TApplication und schau dann unter Methoden.

cu

hi nochmal,

also, ich hab mir jetzt gerade die Hilfe zu MessageBox der Windows-API (API-Hilfe) und zu TApplication.MessageBox (Delphi-Hilfe) angeschaut.
Ist beides eigentlich einleuchtend und ganz klar. Zumindest bei Delphi in den Version 5, 7 und 2005 aber das mag daran liegen, das ich seit knapp 20 Jahren mit Pascal und Delphi programmiere. Ich weiss ja nicht, welche Version du benutzt, ich hab zur Zeit diese drei installiert. Aber ich bin mir zimlich sicher, dass es in Delphi Version 1, 2, 3, 4 und 6 auch eine verständliche Hilfe gibt (Die installiere ich aber jetzt nicht extra), vorausgesetzt, man bleibt beim Programmieren erstmal auf seinem Level und versucht nicht gleich die API zu benutzen.

Du solltest die Hilfe nicht so runtermachen, nur weil du sie nicht verstehst. Ich verstehe auch kein Fachbuch über Quantenphysik, aber deshalb sag ich nicht, das der Autor inkompetent ist.

Verwende doch einfach für ein Meldefenster mit nur einem OK-Button

procedure ShowMessage(const Msg: string);

Die Hilfe zu dieser Prozedur ist sicher auch für Einsteiger leicht verständlich. Wenn du eine Meldung möchtest, auf die der Anwender mit z.B. JA oder NEIN reagieren kann,

function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Word;

Das sieht dann im Quelltext so aus

MessageDlg(‚Ich bin der Meldetext‘,mtConfirmation,[mbYes,mbNo],0);

Auch für diese Prozedur ist die Hilfe so geschrieben, dass ein Einsteiger sie leicht verstehen kann.

Gruß

Michi

Delphi-Hilfe
Hallo

Es ist ja nicht so, dass man die Delphi-Hilfe nicht versteht. Das Problem ist nur, dass man wissen muss, wie der Befehl heißt, um an dessen Funktionsweise zu kommen. Wenn man versucht, anhand einer Angabe über den Zweck der Funktion an den Namen des Befehls zu kommen, findet ma nichts.

Beispiel:
Wenn man im Index ‚Stringfunktionen‘ oder ‚String-Funktionen‘ eingibt, sollte als erster Eintrag eine Seite kommen, die auf die Funktionen Concat, Pos, Lenght… verweisst. Diese Liste findet man auch, und zwar unter ‚String-Behandlungsroutinen‘. Wer nicht auf dieses tolle Wort kommt, geht lehr aus.

Als Vergleich mal das PHP-Handbuch von php.net:
http://www.php.net/manual/de/funcref.php
Eine so säuberliche Auflistung der grundlegenden Funktionen würde der Delphi-Hilfe außerordentlich gut tun. Natürlich ist Object Pascal eine viel komplexere Sprache als PHP, aber die Delphi-Hilfe könnte sich da wirklich eine Scheibe abschneiden.

Hi,

Als Vergleich mal das PHP-Handbuch von php.net:
http://www.php.net/manual/de/funcref.php

Kein Vergleich, PHP.net hat wohl das allgemein beste Online-Manual.

Eine so säuberliche Auflistung der grundlegenden Funktionen
würde der Delphi-Hilfe außerordentlich gut tun. Natürlich ist
Object Pascal eine viel komplexere Sprache als PHP, aber die
Delphi-Hilfe könnte sich da wirklich eine Scheibe abschneiden.

Als Ersatz finde ich http://www.delphibasics.co.uk/ ziemlich ok, ist auch fast alles drinnen - und dabei schön strukturiert. Die Delphi-Hilfe kann man wirklich fast vergessen, im Notfall ist Google sicher besser oder laut „Hilfe!“ zu schreien :wink:

Schönen Gruß,
Rudy

2 Like

Application.MessageBox
Die Programmierung einer MessageBox ganz einfach erklärt

Application.MessageBox(,
,
mbYesNo +mb_DefButton2 + mb_IconError);

Dies ist einen Error Meldung mit einen Ja und Nein Button.
Es gibt auch die Möglichkeit
mb_IconWarning = Warnung
mb_IconInformation = Information
mb_IconConfirmation = Frage

für eine Button abfrage (also was passiert wenn man auf „Ja“ klickt)

if Application.MessageBox(,
,
mbYesNo +mb_DefButton2 + mb_IconError) = mrYes then

Hallo

Das gibt schon mal nen Stern, auch wenn mir was deutsches zum kostenlosen Download noch lieber wäre.

Manomann… das stundenlange Suchen hat ein Ende.

cu

Hallo michael,

  1. wie kann man in delphi am einfachsten eine zahl auf
    ganzzahligkeit überprüfen?

hier würde mich mal interessieren, wozu man denn eine solche Ganzzahligkeits-Überprüfung benötigen sollte? Könntest Du mir ein (oder auch mehrere) Beispiel(e) nennen?

Gruß
Martin

hi,

hier würde mich mal interessieren, wozu man denn eine solche
Ganzzahligkeits-Überprüfung benötigen sollte? Könntest Du mir
ein (oder auch mehrere) Beispiel(e) nennen?

wenn ich zahlen mir rest dividieren will, muss ich zunächst überprüfen, ob sie ganzzahlig sind und andere („echte“ reals) ausschließen.

es gibt mehrere rechenoperationen, die nur für integers sinnvoll sind (faktorielle z.b., binomialkoeffizienten usw. usf.). ein programm, das das nicht abfragt, produziert bei fehleingaben hänger.

m

hi,
it’s a little step for mankind, but a great leap for a man :wink:
auch von mir n sternchen.
m

Als Ersatz finde ich http://www.delphibasics.co.uk/ ziemlich
ok, ist auch fast alles drinnen - und dabei schön
strukturiert. Die Delphi-Hilfe kann man wirklich fast
vergessen, im Notfall ist Google sicher besser oder laut
„Hilfe!“ zu schreien :wink:

Hi,
Delphi Basics ist eine sehr hilfreich Seite.
In der Delphi-Hilfe steht zwar viel drin, aber nie das was man wirklich braucht. Und wenn dann nur irgendwie halbherzig erklärt.

Robin

Also ganzahltest:
if zahl1 trunc(zahl1) then blabla…

showmessage(‚hi du sieht die meldung‘);

If bedingung1 then
begin
anweisung
end
else
begin
anweisung2
end;

wäre damit alles beantowrtet?