Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Inputbox (https://www.delphipraxis.net/56430-inputbox.html)

Alexander Roth 5. Nov 2005 14:23


Inputbox
 
Hi Leute,

das steht in der Hilfe:
Zitat:

Unit

Dialogs oder QDialogs

Kategorie

Dialogfelder und Meldungen

Delphi-Syntax:

function InputBox(const ACaption, APrompt, ADefault: string): string;
function InputBox(const ACaption, APrompt, ADefault: WideString ): WideString; overload;

function InputBox(const ACaption, APrompt: WideString ; ADefault: Double; Min: Double = Low(Integer); Max: Double = High(Integer); Decimals: Integer = 1): Double; overload;
function InputBox(const ACaption, APrompt: WideString; ADefault: Integer; Min: Integer = Low(Integer); Max: Integer = High(Integer); Increment: Integer = 1): Integer; overload;
Wieso kann ich diesen Aufruf dann nicht machen?
Delphi-Quellcode:
i:=inputbox('hi','gib zahl ein',10,0,1000,1);

ManuMF 5. Nov 2005 14:27

Re: Inputbox
 
Gegenfrage: Wie lautet die Fehlermeldung?

Gruß,
ManuMF

Sepp 5. Nov 2005 14:29

Re: Inputbox
 
Hallo Alexander,

ich nehme an Du erwartest als Rückgabe einen Integer.
Jedenfalls sieht es nach der Wahl Deiner Variablen so aus.

Laut der Definition bekommst Du aber einen String bzw Widestring zurück.
Hast Du das beachtet? :?:

Grüße

Helmi 5. Nov 2005 14:29

Re: Inputbox
 
Hallo,

ich hab deine Code-Zeile kurz getestet.

Wenn du:
Delphi-Quellcode:
uses
  Dialogs;
schreibst, dann kommt der Fehler : "[Fehler] Unit1.pas(31): Inkompatible Typen: 'String' und 'Integer'"
(ach ja - ich hab angenommen, dass die Variable i eine Integervariable ist)

Um das zu verhindern schreib einfach:
Delphi-Quellcode:
uses
  QDialogs;
und schon gehts!

ichbins 5. Nov 2005 14:31

Re: Inputbox
 
qdialogs gibts under d7pers nicht. du musst die Integervariable durch einen String ersetzen. Die Integers hinten auch alle durch einen string.

Sepp 5. Nov 2005 14:31

Re: Inputbox
 
Sorry noch ne Ergänzung.

natürlich auch nen Double. :-D

Grüße

Alexander Roth 5. Nov 2005 14:33

Re: Inputbox
 
@sepp: der Rückgabewert sollte integer sein!
@ichbins: Das ist echt schrott.


Muss ich dann um diese Funktionsvielfalt zu kriegn mir eine eigene Form machen?
(Ich denke mal Inputquery funktioniert dann auch nicht under Delpi Pers 7)

MrKnogge 5. Nov 2005 14:34

Re: Inputbox
 
Zitat:

Zitat von Alexander Roth
@sepp: der Rückgabewert sollte integer sein!

Dann wandle sie doch einfach anschliesend um !?

gruss

ichbins 5. Nov 2005 14:35

Re: Inputbox
 
@alexander: wieso, ich hab die Unit nicht und in der Hilfe steht auch sowas.

ManuMF 5. Nov 2005 14:35

Re: Inputbox
 
@ichbins: Das bringt nichts, die PE-InputBox erwartet nur 3 Parameter und kann keine Zahlen direkt entgegennehmen.

[OT]Wenn QDialogs nicht bei den PEs dabei ist, wie kommt die Unit dann in die Hilfe? Bei mir steht sie nicht drin.[/OT]

@MrKnogge: Das Problem sind ja die nicht vorhandenen Vorgaben, die die spezielle InputBox jedoch macht.

ichbins 5. Nov 2005 14:38

Re: Inputbox
 
Zitat:

Zitat von ManuMF
[OT]Wenn QDialogs nicht bei den PEs dabei ist, wie kommt die Unit dann in die Hilfe?[/OT]

frag borland, ich wars nicht, ehrlich! Da steht ja auch dabei: "wenn sie nur eine PE besitzten, haben sie keine Q-Units" (oder irgendwie so). Einfach eine Hilfe für alle versionen.

Khabarakh 5. Nov 2005 14:39

Re: Inputbox
 
Zitat:

Zitat von ManuMF
[OT]Wenn QDialogs nicht bei den PEs dabei ist, wie kommt die Unit dann in die Hilfe? Bei mir steht sie nicht drin.[/OT]

Ich habe zwar keine D7-PE (besser gesagt gar kein D7), aber ich denke, dass die gesamte CLX in der PE nicht enthalten ist, die Hilfe jedoch nicht entsprechend angepasst wurde.

Sepp 5. Nov 2005 14:43

Re: Inputbox
 
Hallo Alexander,

In Dialogs finde ich nur die folgende Definition

Delphi-Quellcode:
Function InputBox(const ACaption, APrompt, ADefault: string): string;
begin
  Result := ADefault;
  InputQuery(ACaption, APrompt, Result);
end;
Eine Überladung gibt es nur in QDialogs.

Ich würde die Funktion mir entsprechend selbst erstellen und InputQuery als Basis dafür machen
Das funktioniert dann auch in anderen Delphiversionen.

Grüße

Sepp

ichbins 5. Nov 2005 14:44

Re: Inputbox
 
inputquery gibt als bool zurück ob der User auf OK geklickt hat. inputbox ist dafür leicher zu handhaben.

Sepp 5. Nov 2005 14:52

Re: Inputbox
 
Zitat:

: ichbins : inputquery gibt als bool zurück ob der User auf OK geklickt hat. inputbox ist dafür leicher zu handhaben.
Hast du schon mal was von Paramteren gehört die als Var definiert sind?
zur Information

Delphi-Quellcode:
function InputQuery(const ACaption, APrompt: string;
  var Value: string): Boolean;
Über den Wert Value kannst du Die jederzeit den Eingabewert der Box holen und selbst bearbeiten
Dazu noch über den Rückgabewert ob Ok gedückt wurde. Also was braucht man noch mehr

Grüße

Alexander Roth 5. Nov 2005 14:56

Re: Inputbox
 
@sepp: Es ist halt einfach eleganter min und max und nachkommastellen alles in einer Zeile zu erledigen.

Doch da Borland der Personal Usern den eleganten Zugriff versperrt bleibt mir wohl keine andere Möglichkeit als den Rückgabewert auf alles mögliche zu überprüfen.

Tschüss

Danke für eure tolle und schnelle Hilfe

ichbins 5. Nov 2005 15:03

Re: Inputbox
 
mit den var-parametern meine ich ja "schwerer zu handhaben"

@alex: du könntest ja auch dein eigenes Dialog-Form machen.

Luckie 5. Nov 2005 15:31

Re: Inputbox
 
Zitat:

Zitat von Helmi
Um das zu verhindern schreib einfach:
Delphi-Quellcode:
uses
  QDialogs;
und schon gehts!

dann sag ihm aber bitte auch die ganze Wahrheit und teile ihm mit, dass er dann noch meherer MB an DLLs mitausliefern darf, damit das Programm läuft.

daniel_0 19. Feb 2007 12:40

Re: Inputbox
 
Hi Leute!

ich hab ein kleines, aber irgendiwe sehr ärgerliches Problem mit der Inputbox und komme einfach nicht weiter.

Ich möchte einfach einen String mit wenigen Zeichen über eine Inputbox einlesen. Die Variable ist global deklariert! Die Inputbox wird beim Laden einer Form aufgerufen.
Sobald ich das Programm starte, erscheint die Box mit dem im Sourcecode vordefinierten Default Text.
klicke ich jetzt allerdings in das Textfeld der Inputbox, hängt sich das Programm auf. Die Systemauslastung des Prozesses steigt auf 100% und das Programm lässt sich nur noch über den Task Manager beenden.
Lege ich die Variable statisch, also direkt über eine Zuweisung aus dem Sourcecode fest, funktioniert alles wunderbar.

Ich werde euch den Sourcecode mal eben unter mein Problem stellen, vielleicht hat ja jemand von euch eine Idee, ich schätze dass die Lösung ganz einfach ist nur dass ich einfach nicht drauf komme.

Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  path:=Inputbox('Eingabe','Gib hier den Pfad an:','C:\');
  if fileexists(path + 'muh.txt') then
    stdMemo.Lines.LoadFromFile(path + 'Session.txt');
end;
Besten Dank im Voraus!

Phoenix 19. Feb 2007 12:53

Re: Inputbox
 
Neue Frage -> Neues Thema.

Und bitte keine Themen von anderen Leuten entführen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:33 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