Autor Beitrag
kaiserbert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Mo 31.05.04 11:35 
Hallo,

kann mir einer von euch sagen, wie ich einen Wert aus meinem ValueListEditor,
auslesen kann, so daß ich damit wie mit einer Variablen arbeiten kann.
Hier wollte ich in diese Variable folgendes einsetzen:

ner.lpRemoteName := '\\'PChar(ValueListEditor1.strings.server1)\log;

Das scheint aber irgendwie falsch zu sein. Er spuckt mir folgende Fehlermeldungen rauß
[Fehler] anmeldunfprog.pas(52):Operator oder Semikolon fehlt.
[Fehler] anmeldunfprog.pas(52):Undefinierter Bezeichner:'server1'


Und vielleicht kann mir einer ja auch ein gutes Buch empfehlen.

mfg bert
Benedikt
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 31.05.04 11:50 
Hi,

Values aus dem ValueListEditor kannst du über die Eigenschaft Values[Key: String] abfragen.
Um Keys abzufragen gibt es die Eigenschaft Keys[Index: Integer] und wenn du direkt auf Zellen zugreifen willst dann geht das mit Cells[ACol, ARow: Integer].

Schau dir auch mal die Delphi-Hilfe zum ValueListEditor an, da steht das auch alles beschrieben...


Dein Code könnte dann ungefähr so aussehen (wobei ich natürlich nicht weiß, was in deinem ValueListEditor drin steht):

ausblenden Delphi-Quelltext
1:
ner.lpRemoteName:=PChar('\\'+ValueListEditor1.Values['server1']+'\log');					
kaiserbert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Di 01.06.04 13:17 
Hallo,

danke erstmal für deine Hilfe.
Den Befehl:
ValueListEditor1.Values['server1']

kennt er nicht, wenn ich über die automatische Befehls-Vervollständigung gehe.
Er kennt nur:
-create
-ItemProps
-Constraints
-Font
-PopupMenu
-Strings
-TitleCaptions
-Canvas
-CreateParented
-DockCLients
-Brush
-Controls
-Action
-FloatinDockSideClass
-HostDockSite
-Components
-Parents
-Owner
-VCLComObjetc
-ClassInfo
-MethodAdress
-FieldAdress

Habe versucht die Definition zu vereinfachen, um meinen Fehler rauszukriegen:
ner.lpRemoteName:=ValueListEditor1.Values['server1']; //funktioniert nicht

Ausspucken tut er mir:
[Fehler]: undefinierter Bezeichner:Value

Habe dann versucht was mit diesem Befehl zu machen:
ner.lpRemoteName := ValueListEditor1.Strings:='server1';

Weiss aber nicht ob er dann eher eine neuen Eintrag in meiner Liste erzeugt,oder nur liest(was ich ja nur will).

Jeden falls ausspucken tut er mir:
[Fehler]: inkompatible Typen: 'TString' und 'String'


Wo liegt mein Fehler oder wie kann ich den Listeneintrag in einer Variablen Definition nutzen?

mfg bert
Benedikt
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 01.06.04 15:13 
kaiserbert hat folgendes geschrieben:

Den Befehl:
ValueListEditor1.Values['server1']
kennt er nicht

Sollte er aber eigentlich.
Heißt dein ValueListEditor auch ValueListEditor1? Ist die Unit ValEdit in den Uses?


kaiserbert hat folgendes geschrieben:
Habe dann versucht was mit diesem Befehl zu machen:
ner.lpRemoteName := ValueListEditor1.Strings:='server1';


Das kann nicht gehen da ValueListEditor1.Strings vom Typ TStrings ist, und demzufolge mehrere Strings beinhaltet. Das heißt du musst, wenn du mit der Strings-Eigenschaft arbeitest, genauso verfahren wie bei einer TStringList oder bei den Items einer ListBox.

Z.B.:
ausblenden Delphi-Quelltext
1:
ValueListEditor1.Strings.Add('test');					



Aber wie gesagt, eigentlich kennt der ValueListEditor die oben von mir angesprochenen Eigenschaften.
kaiserbert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Mi 02.06.04 22:40 
Danke erstmal,

ich glaube ich habs, muss wohl ein Tipp Fehler gewesen sein. Statt values habe ich value
geschrieben.
Aber nun taucht eine weitere Fehlermeldung auf:
[Fehler] anemeldungsfenstermain2.pas[48]: Inkompatible Typen 'String' und 'PAnsiChar'


Hier nochmal mein Sourcecode, der Fehler müsste Zeile 48 stehen(Zeilen sind links nummeriert):

1:unit anmeldungsfenstermain2;
2:
3:interface
4:
5:uses
6: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7: Dialogs, ComCtrls, TabNotBk, StdCtrls, Mask, FileCtrl, Grids, ValEdit;
8:
9:type
10: TForm1 = class(TForm)
11: TabbedNotebook1: TTabbedNotebook;
12: username_field: TMaskEdit;
13: password_field: TMaskEdit;
14: Label1: TLabel;
15: Label2: TLabel;
16: general_ok: TButton;
17: general_cancel: TButton;
18: general_disconnect: TButton;
19: general_connect: TButton;
20: ValueListEditor1: TValueListEditor;
21: Button5: TButton;
22: Button6: TButton;
23: Button7: TButton;
24: Button8: TButton;
25: Button9: TButton;
26: Button10: TButton;
27: ValueListEditor2: TValueListEditor;
28: procedure general_okClick(Sender: TObject);
29: private
30: { Private-Deklarationen }
31: public
32: { Public-Deklarationen }
33: end;
34:
35:var
36: Form1: TForm1;
37: ner : TNetResource;
38: res : dword;
39:
40:implementation
41:
42:{$R *.dfm}
43:
44:procedure TForm1.general_okClick(Sender: TObject);
45:begin
46: ner.dwType := RESOURCETYPE_DISK;
47: ner.lpLocalName := 'H:';
48: ner.lpRemoteName := ValueListEditor1.Values['server1']; //<----- Hier ist der Fehler
49: ner.lpProvider := nil;
50:
51: res := WNetAddConnection2(ner,
52: PChar(password_field.text),
53: PChar(username_field.text),
54: 0);
55:
56: if(res = NO_ERROR) then ShowMessage('Super, klappt ja!')
57: else ShowMessage(Format('Fehler %d',[res]));
58:
59:end;
60:
61:end.


Wie kann ich die Typen 'String' und 'PAnsiChar' in meinem Sourcecode ineinander überführen?
Das in Klammern stehende, 'server1', müsste ein String sein oder?
Nur wo soll PAnsiChar sein, etwa das in Zeile 52 + 53, wo ich mein Benutzername und Passwort übergebe?

mfg bert
kaiserbert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Do 03.06.04 10:48 
Hallo nochmal,
habe es nun habe die kritische Zeile 48(Siehe oben Quelltext), folgendermassen geschrieben:

ner.lpRemoteName := PChar(ValueListEditor1.Values['server1']);

Somit wird die Variable(auf der linken seite des "Geichheitszeichens") mit einem PAnsiChar definiert und nicht mit einem String.

mfg bert
Benedikt
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 03.06.04 15:13 
Hättest du in meinen zweiten Post hier im Thread geguckt - da stand es genauso mit dem TypeCast nach PChar... :wink:

Es würde übrigens der Übersichtlichkeit sehr zu Gute kommen, wenn du deinen Code demnächst in [delphi] - Tags setzt.