![]() |
AW: Inhaltsabfrage in Delphi 10.2
Die Frage ist nur, wie ich diese Werte, die durch einzelne Klicks an das Memo übergeben werden, anders speichern kann. Ich bin gerade zu dumm, um das zu erkennen. Weil, wenn eine 1, eine 4 und eine 5 übergeben werden, kann ich einfach den Wert aus der Line1 übergeben - wie komme ich denn sonst an den Wert, der durch die Klicks zusammengestellt wird? Wie gesagt.. bin Anfänger und sehr verwirrt, haha.
|
AW: Inhaltsabfrage in Delphi 10.2
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mal eine kleine Demo für dich gemacht. Da kannst du dir anschauen, wie ich es auf die Schnelle machen würde.
Nicht perfekt, aber da kannst du dir was rausziehen, und es für dich dann perfekt machen. Ich habe dir hier mal die entscheidenden Methoden aufgeführt. Die Aktuelle Zahl halte ich in der Variable Zahl als string (string deshalb, weil ich mir sonst nach dem Komma folgende Nullen merken müsste, bis der Benutzer wenigsten eine Ziffer <>0 eingibt. Daher der Einfachheit halber als string). Die Buttons für die Zahlen und Komma haben alle die btn1Click-Procedure. Ich entnehme jeweils ihrer Caption, um welche Zahl oder Komma es sich handelt. Die Procedure ZahlHinzufuegen übernimmt nun das tatsächliche Hinzufügen. Allerdings müssen hier eben die Sonderfälle berücksichtigt werden, damit immer gewährleistet ist, dass in Zahl ein gültiger Extended-Wert steht. Das Anzeigen mache wieder über eine eigenen Procedure, da ich a) diesen Code an verschiedenen Stellen benötigen würde und b) ich die Methode so klein wie möglich halten will. Also immer wenn sich ein Codefragment mindestens 1x wiederholt, lohnt sich eine eigene Methode dafür. Und übersichtlicher macht's auch. Im KeyPrass filtere ich mir alle Key's und löse entsprechen den Button aus. Ich hätte auch z.B. ZahlHinzufuegen('1'); machen können. Und dann noch eine Procedure für das Löschen von Zahlen. Auch hier muss man immer darauf achten, das in Zahl ein gültiger Extended-Wert verbleibt. Statt Komma füge ich einen Punkt hinzu, weil das das Dezimalzeichen für Fließkommazahlen unter Delphi ist. Das in der Darstellung zu ändern, darum kannst du dir Gedanken machen. Genauso wie über den Fehler, dass man in der Version das Komma mehrmals eingeben kann, was natürlich nicht sein darf. Bitteschön. (Liegt übrigens auch als komplettes Projekt im Anhang)
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
begin ZahlHinzufuegen((Sender as TButton).Caption); end; procedure TForm1.btnDivisionClick(Sender: TObject); begin Uebertrag(raDivision); end; procedure TForm1.btnMinusClick(Sender: TObject); begin Uebertrag(raMinus); end; procedure TForm1.btnMultiplikationClick(Sender: TObject); begin Uebertrag(raMultiplikation); end; procedure TForm1.btnPlusClick(Sender: TObject); begin Uebertrag(raPlus); end; procedure TForm1.FormCreate(Sender: TObject); begin Zahl:='0'; Ergebnis:=0; RechenArt:=raPlus; AddKomma:=False; mmoAusgabe.Lines.Clear; while mmoAusgabe.Lines.Count<3 do mmoAusgabe.lines.Add(''); WertAufMemo; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Ord(Key) of 8: LoescheLetztStelle; 48, 96: btn0.Click; 49, 97: btn1.Click; 50, 98: btn2.Click; 51, 99: btn3.Click; 52, 100: btn4.Click; 53, 101: btn5.Click; 54, 102: btn6.Click; 55, 103: btn7.Click; 56, 104: btn8.Click; 57, 105: btn9.Click; 42, 106: btnMultiplikation.Click; 43, 107, 61, 12: btnPlus.Click; 45, 109: btnMinus.Click; 47, 111: btnDivision.Click; 44, 188, 190: btnKomma.Click; else Key:=0; end; end; procedure TForm1.LoescheLetztStelle; begin if Length(Zahl)>1 then Zahl:=Copy(Zahl, 1, Length(Zahl)-1) else Zahl:='0'; WertAufMemo; end; procedure TForm1.Uebertrag(NeueRechenArt: TRechenart); begin case RechenArt of raPlus: Ergebnis:=Ergebnis+StrToFloat(Zahl); raMinus: Ergebnis:=Ergebnis-StrToFloat(Zahl); raMultiplikation: Ergebnis:=Ergebnis*StrToFloat(Zahl); raDivision: begin if Zahl<>'0' then Ergebnis:=Ergebnis/StrToFloat(Zahl); end; end; Zahl:='0'; RechenArt:=NeueRechenArt; WertAufMemo; end; procedure TForm1.WertAufMemo; begin mmoAusgabe.Lines[0]:=FloatToStr(Ergebnis); case RechenArt of raPlus: mmoAusgabe.Lines[1]:='+'; raMinus: mmoAusgabe.Lines[1]:='-'; raMultiplikation: mmoAusgabe.Lines[1]:='*'; raDivision:mmoAusgabe.Lines[1]:='/' ; end; mmoAusgabe.Lines[2]:=Zahl; end; procedure TForm1.ZahlHinzufuegen(Eingabe: string); begin if Eingabe='0' then begin if Zahl<>'0' then Zahl:=Zahl+Eingabe else Zahl:='0'; end else if Eingabe=',' then begin if Zahl='0' then Zahl:='0.' else Zahl:=Zahl+'.'; end else begin if Zahl<>'0' then Zahl:=Zahl+Eingabe else Zahl:=Eingabe; end; WertAufMemo; end; |
AW: Inhaltsabfrage in Delphi 10.2
Vielen Dank für deine Mühe!
Ich habe nur das Problem, dass ich mit Embarcadero programmiere und daher die VisualStudios-Datei nicht benutzen kann (kann sein, dass es Wege gibt). Ich schaue mir das mal genauer an und versuche mir an Hand des Quellcodes, mein Wissen zu erweitern. Dank dir :) |
AW: Inhaltsabfrage in Delphi 10.2
Zitat:
Also wenn du meinen Post meinst, dann ist das Delphi pur. Kann natürlich sein, dass du z.B. die .res-Datei mit Doppelklick öffnen wolltest. Die wird ggf. dann mit VS geöffnet. Versuchs mal mit der .dpr oder .proj-Datei. |
AW: Inhaltsabfrage in Delphi 10.2
Habe es genauso versucht. Dann noch anders gespeichert und per Embarcadero versucht, die Datei zu öffnen, wird mir aber nichts angezeigt. Möchte immer direkt mit VS öffnen und es nicht möglich das umzustellen..
|
AW: Inhaltsabfrage in Delphi 10.2
Mit "Visual Studio Code" kann man auf sowas wie OmniPascal aufbauen, ich habe es noch nicht versucht da mir das Original Delphi reicht.
Generell ist Visual Studio eine Programmierumgebung mit Eigener Syntax und Compiler die kein Delphi/Pascal von Hause aus beherrscht. Also Versuche noch mal ganz genau zu erklären was Dein Ziel ist. Ein Delphi Projekt nach VS portieren? Ein VS Projekt nach Delphi portieren? |
AW: Inhaltsabfrage in Delphi 10.2
Zitat:
Zitat:
Wenn du aber lieber VisualStudio (Microsoft), und damit VisualBasic, C# oder C++ möchtest, dann bist du hier geringfügig falsch. Aber dein Code, den du hier zwischendurch mal gepostet hast, ist schon Pascal und damit Delphi. Das ist dir schon klar, oder? Also, noch mal in kürze: - Anhang Demo.zip runterladen. - Demo.zip in ein Verzeichnis entpacken. - Delphi starten - In Delphi "Projekt öffnen", in das Verzeichnis wechseln und Demo.proj oder Demo.dpr öffnen Wenn das nicht geht, hier genau sagen, was nicht geht, welche Fehlermeldung kommt und ggf. noch einen Screenshot anhängen. |
AW: Inhaltsabfrage in Delphi 10.2
Ich bin nicht dumm. Ich programmiere nur mit Embarcadero, aber wenn ich deine Datei öffnen will, möchte das immer mit VisualStudios starten, obwohl ich es nicht mal auf meinem Computer besitze. Wenn ich versuche, das Projekt mit Embarcadero zu öffnen, geht das nicht, da einfach das Projekt nicht angezeigt wird. Ich habe es nie gemeint, dass ich versuche irgendwas mit VisualStudios zu öffnen, sondern es will sich von alleine mit VisualStudios öffnen!
Damit meine ich, dass ich deine Dateien entpackt habe und versucht habe, das Projekt auszuführen. Aber es passiert einfach gar nicht. Es scheint so, als würde es kurz laden, öffnen tut sich aber nichts. |
AW: Inhaltsabfrage in Delphi 10.2
Dann korrigiere die Verknüpfung der entsprechenden Dateitypen.
|
AW: Inhaltsabfrage in Delphi 10.2
Ist jetzt aber auch egal. Ich probiere es nochmal von vorne und danke für eure Hilfe!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz