Hallo,
habe ein Problem mit der Speicherverwaltung von meinen dynamisch erzeugten Arrays. Das Prog besteht aus einem MainForm und innerhalb dieses kann man dann mehrere MDIChilds Formen erstellen, welche die Werte der erzeugten 2D-Arrays graphisch als TImage darstellen.
Hier meine zwei (bzw wahrscheinlich doch nur eins) Probleme:
1. Beim umschalten zwischen den MDIChilds bekomme ich über das Ereigniss OnMauseDown nur den Wert vom zuletzt erstellten TImage (bzw. dessen Array-Wert)
2. Beim schließen einer MDIChild Form bekomme ich beim ersten schließen den Speicher frei, beim zweitenmal gibt es aber eine Fehlermeldung. Sprich der Destruktor zeigt auf die gleichen Resourcen, die vorher schon freigegeben wurden, weil die ganzen dyn Arrays anscheinend immer auf den gleichen Speicherplatz zeigen.
Lange Rede kurzer Sinn. Gibt es eine Möglichkeit quasi einen Zähler für seine dynamisch erzeugten Arrays zu genererieren um dadurch zu gewährleisten, das man zu jedem erzeugtem MDIChild Form auch das richtige Array zuweisen kann ??
Hier mal die einfache dyn. Speicherbeschaffung/-freigabe und da fehlt halt noch irgendein Zähler drinnen.
unsigned char **bmatrix(short nrh, short nch)
{
matrixb = new unsigned char *[nrh];
for (i = 0; i < nrh; i++)
{
matrixb[i] = new unsigned char[nch];
}
return matrixb;
}
void free_bmatrix(short nrh)
{
for (short i = 0; i < nrh; i++)
delete [] matrixb[i];
delete [] matrixb;
fclose(dateidhm);
}
Sorry falls das ganze im falschen Forum gelandet ist. Weiß nicht ob's beim C++ Forum besser aufgehoben ist, derweilen hat ja viel mit TForm und TImage usw zu tun. Außerdem bin ich noch Anfänger
MFG
Marc
Hallo,
ich möchte das Aussehen des FontDialogs verändern, sodass nur noch Schriftarten, Fett Kursiv usw. und Größe ausgewählt werden können.
Über die Hilfe habe ich die Effekte (Durchgestrichen usw.) bereits entfernt. Aber das "Muster" und "Script" bekomme ich nicht weg.
Wie geht das?
Das erklärt natürlich, warum die Hooks nicht funktionieren, wenn man nicht
"Mit Laufzeit-Packages aktualisieren" markiert hat. Und das bedeutet wohl
auch, daß man das nicht anders machen kann.
Danke,
Alexander
Ich arbeite mit wxWindows und bin sehr zufrieden. wxWindows ist sehr umfangreich (Die Exe-Größe leider auch), einfach zu bedienen und sehr portabel (Win, Linux, Unix, BeOS, Mac, PPC2002, ...). Besser als GTK, QT, CLX oder sonst was...
1ntrud0r schrieb:
nein ich leider nicht ... da du die runtime library vermutlich nicht statisch gelinkt hast.
jo, hattest recht! inzwischen liegt ne neue datei auf dem webspace! kannst ja nochmal versuchen...
Tja, ich dachte wirklich, er wollte die Hintergrundfarbe ändern...
Ok, eigentlich will nur ICH die Hintergrundfarbe zeilenweise ändern können. Äh - wenn wir schon dabei sind...?
Also,
Ich würde dir das empfehlen. Nimm 3 Dateien
1. Deine Unit, deine Projektdatei
2. Deine Klassendeklaration
3. Deine Mthodendeklaration
Von den Units, (Forms) kannst du soviele haben wie du willst. Du inkludierst einfach die Klasse, und verwendest die Methoden der Klasse. Das wars! So mach ich das auch. Ich finde das ist der beste Weg. Du kannst dir noch ein 4. Verzeichnis anlegen
4. Deine Funktionen
dann kannst du auf die Klassen verzichten und machst gleich die Methoden. Auch da, dei einfach inkludieren #include <MeineFunktion.cpp> und diese dann einfach aufrufen MeineFunktion1(int Variable, char Variable2...);
Okay?
Wahrscheinlich meinst du das auch.
Die DbLookupComboBox öffnet sich beim DropDown nicht vollständig,
manchmal nur ein Zeile. Es müssten aber mehr sein. Eingestellt sind 7.
Wenn ich mehrfach öffe und schließe, dann funkt es.
Wie stelle ich ein, dass es gleich funkt?
Danke.
naja ich schreib mal wie ichs verstanden hab: Du hast ein Chatprog was sowohl server als auch client sein kann. Du willst jetzt wissen wenn du das Programm startest ob schon ein server da is oder nich. Die antwort (Das geht nur über LAN und auch nur bis zu nächsten router über internet ist sowas nicht möglich!!!) UDP und Broadcast würd ich empfehlen (Es geht natürlich auch TCP aber hier reicht UDP). Also UDP ist ein Protokol bei dem es keinen Server oder Client gibt sondern nur gleiberechtigte sockets. Du baust in dein Programm einen UDP Socket ein der auf Port 9999(beispiel) läuft. Den hat jedes Programm (UDP Socketrs gibs bei Borland schon fetig als komponente). Wenn dein Programm startet sendet es ein Broadkastpacket. Die IP adresse hierfür ist meißt 255.255.255.0 oder 255.255.255.255 (letzere geht glaub ich immer). Jetzt vershcikst du über den UDP socket an diese IP einfach ein byte zb. Y oder so. Dieses Packet werden alle im LAN bekommen. Jetzt muss dein Programm nur beim Start ein solches Packet verschicken. Sollte niemand antworten gibts noch keinen Server. Sollte dein Programm ein solches Packet erhalten und ist Server dann muss es einfach eine Antwort an den Absender zurückschreiben. Zb
. ein A . JEtzt weiß das andere Programm du bist server
Guido Theinert schrieb:
Ich weiss nicht, was Du unter diesen Konten verstehst, meinst Du Benutzer-
Rechte?
(Bezogen auf WIN2000 ...)
Geh zu Start -> Einstellungen -> Systemsteuerung -> Verwaltung -> Dienste
Such Dir aus der Liste den Apache-Dienst raus und mach da nen Doppelklick drauf.
Klicke auf den Tab Anmelden
Wenn da steht Anmelden als Lokales Systemkonto ändere das mal auf Dieses Konto und gib dazu die entsprechenden Parameter an, z.B. Administrator und das entsprechende Kennwort. Drücke den OK-Knopf, stoppe und starte den Apache Dienst.
Probier jetzt, ob die DLL das Environment lesen kann.
Hast du denn auf der Hauptform auch Komponenten, die dann die Einstellungen darstellen?
Ansonsten gibt es alternativ noch Pagecontrol oder die Visible-Eigenschaften.
Jansen schrieb:
Allerdings gibt's das Ganze wohl nur bei Prof. und Enterprise, und beim BCB6 liegt das Verzeichnis auf der zweiten CD.
Immer wieder das gleiche.. Ich habe immer noch die Standard Edition...
Danke.
Danke für Deine Hilfe. Jetzt läuft alles. Hatte nicht gesehen, dass es noch ein Tool gibt, mit dem man User einrichten kann. Ansonsten gibt es standardmäßig einen Anonymous. Kann jetzt auch mit Indy drauf los ohne Fehlermeldung.