AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"nichts" für einen Record

Ein Thema von xZise · begonnen am 30. Dez 2006 · letzter Beitrag vom 30. Dez 2006
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

"nichts" für einen Record

  Alt 30. Dez 2006, 12:30
Ich habe in Unit B (ist ein Formular) ein Record:
Delphi-Quellcode:
type
  TData = record
    Name : string;
    Age : Integer;
  end;
Jetzt rufe über Unit A die Unit B auf (ein Fenster erscheint), indem man die Daten ändert, oder eine neue Person erstellt.
Jetzt möchte ich die Anzeige Prozedur aufrufen:
(Aufruf
Delphi-Quellcode:
procedure CreatePerson;
begin
  UnitB.FormB.ShowModal("nichts");
end;
(AnzeigeProzedur
Delphi-Quellcode:
procedure ShowModal(data : TData);
begin
  if data = "nichts" then begin
    // Formular zum "Ersteller" machen
  end else begin
    // Forumlar zum "Editor" machen
  end;
end;
Meine Frage ist jetzt: Wie kann ich "nichts" übergeben?
Mit "nil" funktioniert es nicht:
"Er erwartet keinen Pointer"

Kann ich es ggf. anders umsetzen?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: "nichts" für einen Record

  Alt 30. Dez 2006, 12:35
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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: "nichts" für einen Record

  Alt 30. Dez 2006, 12:54
Warum nimmst du nicht einfach zwei getrennte Methoden: Einmal zum Erstellen, einmal zum Bearbeiten ?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#4

Re: "nichts" für einen Record

  Alt 30. Dez 2006, 13:00
Zitat von Klaus01:
Du könntest in dem Record noch eine Bolean Variable einführen

Oder data.Name im Programmanfang initialieren auf ''
Ich wollte eigentlich verhindern, dass überhaupt ein Parameter übergeben werden muss


Zitat von Khabarakh:
Warum nimmst du nicht einfach zwei getrennte Methoden: Einmal zum Erstellen, einmal zum Bearbeiten ?
Gute Idee! Mache ich Aber wer mir agen kann, wie ich "nichts" übergeben kann, kann sich immer noch melden
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#5

Re: "nichts" für einen Record

  Alt 30. Dez 2006, 13:07
wie wäre es mit einem Vorgabe Parameter im "ShowModal"

Delphi-Quellcode:

procedure ShowModal(data : TData = Data1);
begin
  if data = data1 then begin
    // Formular zum "Ersteller" machen
  end else begin
    // Forumlar zum "Editor" machen
  end;
end;
Glaube so geht es

sonnst muss data1 noch irgendwo definieren, aber eig müsste es so ja gehen

Gruss Thorben
Thorben
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#6

Re: "nichts" für einen Record

  Alt 30. Dez 2006, 13:08
Zitat von xZise:
Aber wer mir agen kann, wie ich "nichts" übergeben kann, kann sich immer noch melden
Hängt dieses "nichts" nicht sowieso vom verwendeten Datentyp ab?

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
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#7

Re: "nichts" für einen Record

  Alt 30. Dez 2006, 13:15
Zitat von xZise:
Gute Idee! Mache ich Aber wer mir agen kann, wie ich "nichts" übergeben kann, kann sich immer noch melden
Einen noch schnell:

Delphi-Quellcode:
type
   PData=^TData
   TData = record
    Name : string;
    Age : Integer;
  end;
Delphi-Quellcode:
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;
Und Weg, bis heut Abend
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#8

Re: "nichts" für einen Record

  Alt 30. Dez 2006, 13:18
wer arbeitet schon freiwillig mit Pointern, da kann man ja auch gleich in C programieren aber funktionieren wird es auf jeden fall
Thorben
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: "nichts" für einen Record

  Alt 30. Dez 2006, 13:20
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#10

Re: "nichts" für einen Record

  Alt 30. Dez 2006, 13:31
Delphi-Quellcode:
    function Execute(inItem : TItemData) : Boolean; overload;
    function Execute : Boolean; overload;
Diese Lösung ist auch die Beste danke @ all ^^
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 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