![]() |
static Hilfe
Hallo leute habe ein Problem wie kann ich in Delphi eine Variabel mit static benutzen wie das im C/C++ möglich ist ?
Und wenn das nicht geht die kann ich das anders erreichen ? |
Re: static Hilfe
Ich habs jetzt grad micht ganz parat. aber das ging irgendwie so:
Delphi-Quellcode:
also eine typisierte Konstante in der Funktion anlegen und dann musst du dem Compiler (irgendwo im Menu) noch was zu diesen typisierten Konstanten sagen (da war irgendwo ein Häkchen zu setzen)
const a:integer=0;
|
Re: static Hilfe
Zitat:
soweit ich weiss ist eine globale Variable am ehesten das was du meinst. Wenn du das als Eigenschaft einer Klasse brauchst, kannst du mal unter class variable nachsehen, aber das ist nicht genau das gleiche, weil die nur solange existiert wie eine Instanz der Klasse. Gruss Reinhard |
Re: static Hilfe
Cool wenn das geht aber ohne das Häckchen meckert der bei mir (ich glaub das das daran liegt) ([Pascal Fehler] ndu_tec_k.pas(9): E2029 Bezeichner erwartet, aber 'CONST' gefunden) hmmm schau bitte nochmal nach wo das Häckchen ist ja ?
Hmm und zu dem class variable schau ich auch mal. Ich brauche das so das wenn ich zwei Klassen erzeuge in zwei verschiedenen Programmen das da das selbe in der Variabel steht. |
Re: static Hilfe
Moin nitschedu,
Zitat:
Dort werden die internen Felder initialisiert. |
Re: static Hilfe
Zitat:
Delphi-Quellcode:
Gruss
type
TMyClass = class private function GetStatic: String; procedure SetStatic(value: String); public property StaticString: String read GetStatic write SetStatic; end; implementation const FStatic: String = 'Test-Static'; function TMyClass.GetStatic: String; begin Result := FStatic; end; procedure TMyClass.SetStatic(value: String); begin FStatic := Value; end; Thorsten |
Re: static Hilfe
Also meine Kumpels machen das so das sie in der Klasse vor die Variabel static schreiben das Bedeutet das alle Klassen in diesen Programm die diese Klasse benutzen in dieser Variabel den gleichen Wert drin haben (teilen sich einen Speicher). Da geht bei dennen jetzt wollte ich wiesen wie das in Delphi geht ?
|
Re: static Hilfe
Ja, genau das macht mein Beispiel.
|
Re: static Hilfe
Geht das auch noch wenn Zwei Programm eine DLL wo die Klasse drin ist aufrufen ?
|
Re: static Hilfe
Das kann ich nicht so einfach beantworten. Da musst du mal etwas konkreter werden.
Wie soll da die Klasse erzeugt werden und wie lange lebt sie? Wie willst du innerhalb der Dll mehrere Klassen erzeugen, die dann den aufrufenden Programmen zugeordnet sind? Verwirrte Grüsse Thorsten |
Re: static Hilfe
Also Das erste Programm ist ein Dienst und Läd die dll und Createt die Klasse.
Nun das zweite Programm so später irgentwann mal aufgemacht werden dann läd das programm die Selbe DLL und erstellt auch die Klasse. Nun sollen beide Programm in der Variabel der Klasse das selbe drin Stehen haben. Solte eines der Beiden Programme nicht das sein ist die Variabel Leer. |
Re: static Hilfe
Habs getestet und es geht nicht :-( Will es nun mit ne Hook versuchen. Hat jemand ne Anleitung dazu ?
|
Re: static Hilfe
Hallo :hi:
[Halbwissen] Mit DLLs klappts AFAIK deshalb nicht, weil die immer auf n separaten Speicherbereicht gemappt werden ==> Jedes Prog meint ihm gehört die DLL alleine. Mit Hooks bin ich mir nicht sicher(bzw. noch unsicherer): Die funktionieren irgendwie anders. Da könnte es klappen... [/Halbwissen][1] Soll das ne Art IPC werden? Da bieten sich andere Möglichkeiten an... ![]() ![]() @sirius: meinst du writable consts? Ach du Hilfe die Dinger sind... komisch. Muss zugeben, ich hab sowas auch mal in C++ genutzt(bzw. nutzen müssen). Aber nicht ohne Bauchschmerzen... [1] Sollte ich hier Blödsinn von mir geben bitte berichtigen... mfg Christian |
Re: static Hilfe
Zitat:
Und freiwilling nutzen würde ich das auch nicht, aber solange man das Problem nicht kennt..... |
Re: static Hilfe
sorry wenn ich das problem nicht erwähnt habe ^^. Erstmal ging es darum das die Variabel immer den Selben speicher hat. Naja Windows macht es einenen nicht leicht. Meine Dienst Anwendung soll mit meiner Normalen anwendung informationen austauschen. Das Problem der Dienst ist sozusagen abgeschottet vom rest der Programme :-(. Da der Dienst auch kein Fenster hat geht WM_USER auch nicht.
|
Re: static Hilfe
Also doch IPC. Dann bieten sich aber immer noch mehrere Möglichkeiten:
Ich hab zwar keine Ahnung von Diensten, aber du könntest ja mal folgendes auf Machbarkeit abklopfen: - MMF - NamedPipes - TCP - ... mfg Christian |
Re: static Hilfe
Hmm TCP möchte ich nicht nehmen weil ich keinen Port belegen will.
MMF benutzt wieder Windows Nachrichten, das geht wieder nicht (Die Tuts die ich gefunden habe haben immer Windowsnachrichten benutzt, wenn doch anders geht klärt mich bitte auf :-) ). Und Pips habe ich noch kein Ordnenliches Tut gefunden. |
Re: static Hilfe
MMFs werden häufig im Zuge von Nachrichten gebraucht. Allerdings helfen die Files den Nachrichten und nicht umgekehrt. Du hast halt einen eindeutigen "Dateinamen" und den kannst du ja beiden Programmen sagen (Entweder über Messages oder du machst den Namen konstant; letzteres ist für dich von Nutzen).
|
Re: static Hilfe
Hmm Ok danke ich probiere es mal aber kannst mir noch ne Beispiel zeigen ?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:03 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-2025 by Thomas Breitkreuz