![]() |
"nichts" für einen Record
Ich habe in Unit B (ist ein Formular) ein Record:
Delphi-Quellcode:
Jetzt rufe über Unit A die Unit B auf (ein Fenster erscheint), indem man die Daten ändert, oder eine neue Person erstellt.
type
TData = record Name : string; Age : Integer; end; Jetzt möchte ich die Anzeige Prozedur aufrufen: (Aufruf:)
Delphi-Quellcode:
(AnzeigeProzedur:)
procedure CreatePerson;
begin UnitB.FormB.ShowModal("nichts"); end;
Delphi-Quellcode:
Meine Frage ist jetzt: Wie kann ich "nichts" übergeben?
procedure ShowModal(data : TData);
begin if data = "nichts" then begin // Formular zum "Ersteller" machen end else begin // Forumlar zum "Editor" machen end; end; Mit "nil" funktioniert es nicht: "Er erwartet keinen Pointer" Kann ich es ggf. anders umsetzen? |
Re: "nichts" für einen Record
Du könntest in dem Record noch eine Bolean Variable einführen
und diese auf false setzen wenn in dem Record keine Daten vorhanden sind. Wenn Daten in das Record eingelesen werden, dann den Bolean auf true setzen. Oder data.Name im Programmanfang initialieren auf '' und dann im weiteren Programmablauf auf data.name <> '' prüfen. Grüße Klaus |
Re: "nichts" für einen Record
Warum nimmst du nicht einfach zwei getrennte Methoden: Einmal zum Erstellen, einmal zum Bearbeiten :gruebel: ?
|
Re: "nichts" für einen Record
Zitat:
Zitat:
|
Re: "nichts" für einen Record
wie wäre es mit einem Vorgabe Parameter im "ShowModal"
Delphi-Quellcode:
Glaube so geht es :)procedure ShowModal(data : TData = Data1); begin if data = data1 then begin // Formular zum "Ersteller" machen end else begin // Forumlar zum "Editor" machen end; end; sonnst muss data1 noch irgendwo definieren, aber eig müsste es so ja gehen Gruss Thorben |
Re: "nichts" für einen Record
Zitat:
Als PChar wäre es #0 Als Char ebenfalls #0 Als String wäre es '' und als Integer 0 Als Boolean false und als Pointer nil Und sowieso kannst du bei einem Record nicht einmal ein Vergleich mit einem String machen, oder war das bloß zur Veranschaulichung? Und aners lösen kann man es, indem man, wie Khabarakh schon sagte, die Prozeduren nochmal unterteilt (ist ohnehin sauberer) Flare |
Re: "nichts" für einen Record
Zitat:
Delphi-Quellcode:
type
PData=^TData TData = record Name : string; Age : Integer; end;
Delphi-Quellcode:
Und Weg, bis heut Abend :mrgreen:
procedure ShowModal(data : PData);
begin if data = nil then begin // Formular zum "Ersteller" machen end else begin // Forumlar zum "Editor" machen Data^.Name... end; end; |
Re: "nichts" für einen Record
wer arbeitet schon freiwillig mit Pointern, da kann man ja auch gleich in C programieren :) aber funktionieren wird es auf jeden fall :)
|
Re: "nichts" für einen Record
wenn man nicht mit Pointer arbeiten will kann man das ganze auch überladen. Dann eine Fuktion mit einem Stringparamter nehmen und eine mit einen TData-Paramter
|
Re: "nichts" für einen Record
Delphi-Quellcode:
Diese Lösung ist auch die Beste ;) danke @ all ^^
function Execute(inItem : TItemData) : Boolean; overload;
function Execute : Boolean; overload; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 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