Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Werte in Edits übergeben.. (https://www.delphipraxis.net/13729-werte-edits-uebergeben.html)

Akut-Programming 25. Dez 2003 15:46


Werte in Edits übergeben..
 
Hab mir auch dafür eine kleine Prozedur schreiben wollen, nur bekomme ich auch hier eine Zeugriffsverletzung, wenn ich auf den HaupNode "projekt" zugreifen will.. :wall:

[EDIT] Änderungen siehe nächsten Thread [/EDIT]
Aufbau meiner XML..
XML-Code:
<projekt>
   <projektname>gfhgfh</projektname>
   ...
</projekt>

Akut-Programming 25. Dez 2003 16:18

Re: Werte in Edits übergeben..
 
Hab grad mal noch etwas versucht, eigentlich würd ich es mir ja so vorstellen..
Delphi-Quellcode:
procedure OpenProject(xml_file: string);
var
  curNode: IXMLDOMNode;
begin
  frm_main.opened_xmlDoc.load(frm_main.OpenDialog1.FileName); // Nur bekommt er hier eiene Zugriffsverletzung
  curNode := frm_main.opened_xmlDoc.documentElement.selectSingleNode('/projekt');
  with frm_main do begin
    ed_edit_projektname.Text:=curNode.selectSingleNode('projektname').text;
    ...
  end;
  frm_main.pnl_edit.BringToFront;
end;

aps 25. Dez 2003 17:07

Re: Werte in Edits übergeben..
 
<projekt> ist deine Root-Node? In dem Fall wird deine erste Abfrage auf projekt failen, entsprechend fliegt der Zeiger ins Leere. Du musst auf <projektname> matchen lassen. Und immer brav auf Gültigkeit überprüfen!

BTW: WITH ist sowas von verpönt...

CU
aps

Akut-Programming 25. Dez 2003 18:13

Re: Werte in Edits übergeben..
 
Hi aps,

ich glaube nicht, das es am root liegt, dat hätte aber später zu´n Problem werden können von daher danke für den Hinweis. Er muss irgend n Problem mit dem OpenDialog haben, da da die Fehlermeldung kommt. :gruebel:

Akut-Programming 25. Dez 2003 18:24

Re: Werte in Edits übergeben..
 
Jud okay, so funzt es!!
Delphi-Quellcode:
procedure OpenProject(xml_file: string);
var
  curNode: IXMLDOMNode;
begin
  frm_main.xmlDoc.load(frm_main.OpenDialog1.FileName);
  with frm_main do begin
    ed_edit_projektname.Text:=frm_main.xmlDoc.documentElement.selectSingleNode('projektname').text;
    ...
  end;
  frm_main.pnl_edit.BringToFront;
end;

MathiasSimmack 25. Dez 2003 18:38

Re: Werte in Edits übergeben..
 
Zitat:

Zitat von aps
BTW: WITH ist sowas von verpönt...

Sagt wer?

Nur in dem speziellen Fall ist die Angabe von "frm_main" nicht erforderlich, wenn es sich um eine Form-bezogene Variable (private oder public) handelt. Wenn du, @Akut-Programming, "xmldoc" allerdings von einer anderen Form aufrufst, dann solltest du dir mal Gedanken über den Stil machen.

Das hat mir nämlich bei Chakotays MovieOrganizer auch nicht gefallen, darum habe ich bspw. den Code beim Hinzufügen eines Films in die Hauptform gezogen. Ich glaube, die Dialogform für die Eingabe dieser Daten enthält außer der Kontrolle (is´ was eingetragen, dann aktiviere Button) nichts mehr. ;)

aps 26. Dez 2003 09:37

Re: Werte in Edits übergeben..
 
Zitat:

Zitat von MathiasSimmack
Zitat:

Zitat von aps
BTW: WITH ist sowas von verpönt...

Sagt wer?

Ziemlich jeder, der schon mal ein größeres Projekt gecodet und/oder im Team gearbeitet hat. Auch wenn es mehr Schreibarbeit ist, sollte man statt
Delphi-Quellcode:
with Objekt do begin
  a := 1;
  b := 2;
  c := 3;
end;
besser
Delphi-Quellcode:
Objekt.a := 1;
Objekt.b := 2;
Objekt.c := 3;
schreiben. Hintergrund: Wenn Methoden oder Variablen in verschiedenen Objekten oder Objekttypen den gleichen Namen haben, weiß man mit WITH irgendwann vielleicht nicht mehr, welche Instanz bzw. welches Objekt gemeint ist. Mit der Punktnotation ist das immer eindeutig. Dieses kürzt zum einen die Dokumentation und zum anderen die Fehleranfälligkeit von Projekten ungemein.

Zitat:

Wenn du, @Akut-Programming, "xmldoc" allerdings von einer anderen Form aufrufst, dann solltest du dir mal Gedanken über den Stil machen.
FULL ACK!


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