hm,
@Boarder:
In der Zeile:
__int64 TASMTimer::rdtsc(){ asm {dw 310Fh } }
kommt diese Warnung. DIese kannst du aber ignorieren. Spielt keine Rolle, da asm den Wert zurückgibt.
Ansonsten müsste der Timer funktionieren. Er wurde auch bereits auf anderen Rechnern getestet. Es waren keine Fehler festzustellen.
Das Projekt laden, dessen Form die Standard-Form werden soll.
Die Form anwählen, mit der rechten Maustaste anklicken und "Zur Objektablage hinzufügen"
Entsprechend Namen usw. vergeben.
Per Tools-Menü den Objektablage-Editor öffnen.
Die dort abgelegte Form anwählen und die beiden Häkchen für Neu und Hauptform setzen.
Alles schliessen und mit Datei|Neue Anwendung ein neues Project starten.
Öhm images/smiles/icon_rolleyes.gif , WebFritzi ich geb meine 1 an Dich ab images/smiles/icon_biggrin.gif
Du hast natürlich recht. Entweder zuviel gedacht oder es war zu spät gestern ***Schande über mich***
Ich hab was durcheinander gebracht, hatte mit einem ähnlichen Thema zu tun images/smiles/icon_sad.gif
[ Dieser Beitrag wurde am 29.03.2002 um 17:19 Uhr von Peter editiert. ]
Bei all der Begeisterung immer dran denken, dass man damit auf schwachen Rechnern das
System mächtig ausbremsen kann. Also nach Möglichkeit das Ganze als Option gestalten.
Was flächenmässig begrenzte Transluzenz images/smiles/icon_wink.gif angeht: keine Ahnung.
Wobei festzuhalten bleibt, dass diese .pas-Datei auch nichts weiter macht, als die entsprechende
in dem Paket enthaltene Ressource in das Programm einzubinden. Na ja, wenn man unbedingt noch
eine zusätzliche Datei verwenden will ...
Interessant sind allerdings die Informationen der beiliegenden Readme, die ich hier mal zitieren darf:
- If you use TListView in vsReport mode, you will need to make a change to
your VCL sources, or else you'll get access violations. Copy ComCtrls.pas
to your project's directory (or some other directory in your Search Path
that has precedence over delphi\source\vcl) and change these two lines:
if FImageIndex <> -1 then
fmt := fmt or LVCFMT_IMAGE or LVCFMT_COL_HAS_IMAGES;
to:
if FImageIndex <> -1 then
fmt := fmt or LVCFMT_IMAGE or LVCFMT_COL_HAS_IMAGES
else
mask := mask and not LVCF_IMAGE;
- If you use TStatusBar, the size grip part may get corrupted when you resize
the form at run-time. You can work around this by creating an OnResize
event handler on the TStatusBar with this code:
procedure TForm1.StatusBar1Resize(Sender: TObject);
begin
if StatusBar1.HandleAllocated then
InvalidateRect(StatusBar1.Handle, nil, True);
end;
- For more information, see:
http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/userex/overvie w/cookbook.asp
Was das Ändern der Sourcen angeht, Besitzer der (älteren) Standardversionen des BCB bleiben dabei
leider aussen vor, da dort der Sourcecode nur vorkompiliert mitgeliefert wird. Im BCB6 ist diese Änderung
bereits integriert.
Die Probleme können übrigens auch bei Verwendung der externen manifest-Datei auftreten. Bei der
Benutzung dieses "Tricks" mit fremder, älterer Software ist also eine gewisse Vorsicht geboten.
Und noch ein Zitat von yanni:
Hallo!
Um auch noch das Beenden durch Alt+F4 zu verhindern, kann man im OnCloseQuery-Event "CanClose = false;" schreiben.
yanni
Zeigst du uns bitte mal den entsprechenden Code?
Ooops, hab's grad selbst gefunden:
#include <filectrl.hpp> // ggfs. als letztes(!) include einbinden
String dir = "", root = ""; // "c:"
if (SelectDirectory("Select directory", WideString(root), dir))
Edit1->Text = dir;
Man kann alt werden wie 'ne Kuh, man lernt immernoch dazu.
Einer der Vorzüge des BCB ist es (dank der in ObjectPascal geschriebenen VCL), nicht nur mit dem BCB selbst erstellte sondern auch in und für Delphi geschriebene Komponenten verwenden zu können. Das trifft zumindest auf ca. 90 Prozent der Delphi-Kompos zu, Ausnahmen bestätigen wie immer die Regel. Voraussetzung ist allerdings, dass zu der Komponente der "rohe" Sourcecode mitgeliefert wird (.pas), vorkompilierter Delphi-Code (.dcu) lässt sich nicht verwenden.
Prinzipiell erfolgt die Installation genau wie bei BCB-Komponenten, nur dass statt der .cpp-Datei die entsprechende .pas-Datei angegeben wird. Sollten mehrere .pas-Dateien vorliegen ist üblicherweise die zu wählen, die direkt den Namen der Komponente trägt. Oder, so vorhanden, diejenige, deren Name ein 'reg' oder 'register' o.ä. enthält (zB. MyKompoReg.pas).
Grössere Komponenten(sammlungen) werden üblicherweise sogar mit einem Packagefile (.bpk) für den BCB ausgeliefert. Dieses kann direkt im BCB geöffnet werden, was die Installation weiter vereinfacht.
Mitunter liegen Delphi-Units auch als reiner Pascal-Code vor, d.h. nicht als installierbare Komponente. In diesem Fall kann man die Pascaldateien über die Projektverwaltung direkt zum Projekt hinzufügen. Nachdem das Projekt jetzt einmal kompiliert wurde finden sich entsprechende Pascal-Header (.hpp) im Verzeichnis, die dann wie normale Header-Dateien inkludiert werden. Anschliessend kann wie gewohnt auf die darin bereitgestellten Funktionen etc. zugegriffen werden.
Zu guter Letzt bleibt anzumerken, dass man als erstes natürlich immer die beiliegenden ReadMe's lesen sollte. Bei vielen Komponenten sind dort auch gesonderte Installationsanweisungen für den BCB enthalten.
[ Dieser Beitrag wurde am 02.07.2003 um 10:28 Uhr von Jansen editiert. ]
Häää, ja lüg ich denn, ohne die Content-Zeile gehts bei mir aber nicht. Sehr seltsam. Weisst Du zufällig wie man die Indy Version rauskriegt ? Vielleicht liegts ja mitunter auch daran. Ich hab zwar die 8'er installiert, aber was für ne "Unterversion" weiss ich nicht mehr.
Anmerkung des Moderators:
Der Thread wurde zur Information in die FAQ aufgenommen. Sollte jemand über eine endgültige Lösung des Problems verfügen, bitte im VCL-Forum darauf hinweisen. Danke!
Siehe auch hier.
[ Dieser Beitrag wurde am 28.12.2002 um 13:35 Uhr von Jansen editiert. ]
Liebes Dr. Sommer-Team:
Andauernd bekomme ich von den Moderatoren hier zu hören, ich solle erstmal in der
Hilfe des C++ Builders nachsehen. Aber damit komme ich überhaupt nicht klar, ich
weiss gar nicht, wo ich was suchen soll.
Wie funktioniert das Ding denn eigentlich, und gibt es irgendwelche Tricks, die man
beachten sollte?
Vielen Dank, X*
Lieber X,
deswegen brauchst du dich nicht zu schämen. Das ist alles ganz natürlich, und ein
jeder stand in seinem Leben schon vor diesem Problem.
Unser Experte Dr. Bcb. Junix hat sich deshalb einmal die Zeit genommen und ein um-
fassendes Standardwerk[1] zur effizienten Benutzung der Hilfe verfasst. Dieses sollte
dir über deine Startschwierigkeiten hinweghelfen, und schon bald wirst auch du ver-
ständnisvoll schmunzeln, wenn mal ein Newbie von den Moderatoren ermahnt wird.
Den Link findest du übrigens auch im Kopfteil der Übersichtsseite des VCL-Forums.
Weiterhin viel Erfolg und Spass bei der Arbeit mit dem C++ Builder wünscht dir
dein Dr. Sommer-Team
Name ist der Redaktion bekannt
Verweise
[1] http://www.junix.ch/bcb/help/ (Artikelname: "Wie benutze ich die BCB-Hilfe?")
[ Dieser Beitrag wurde am 20.05.2003 um 14:36 Uhr von junix editiert. ]
Danke, kommt in die FAQ.
Anzumerken wäre evtl. noch, dass Besitzer der BCB-Standardversionen hier wahrscheinlich leer ausgehen, da letztere üblicherweise ohne Assemblercompiler ausgeliefert werden.
PS: Habe mir erlaubt, zur besseren Lesbarkeit die Codeeinrückungen zu optmieren.
Edit:
Zum Thema BCB-Standard und Assembler siehe auch
hier.
[ Dieser Beitrag wurde am 27.02.2003 um 12:44 Uhr von Jansen editiert. ]
Die AnsiString-Methode c_str() liefert einen Zeiger auf ein nullterminiertes char-Array mit demselben Inhalt wie der AnsiString.
AnsiString strText = "Ein String", strCaption = "Ueberschrift";
MessageBox(0, strText.c_str(), strCaption.c_str(), 0);
Da es sich nur um einen Zeiger auf nicht explizit reservierten Speicherplatz handelt, ist der Inhalt des Arrays nur im Moment der Übergabe garantiert. Wird der char* für weitere Operationen benötigt, muss z.B. per strcpy() eine echte Kopie des AnsiString-Inhaltes angelegt werden.
char *ch = new char[strText.Length()+1];
strcpy(ch, strText.c_str());
...
delete [] ch;
Ein paar Hinweise zum Thema aus den Borland-Newsgroups:
Der BCB kann selbstverständlich auch auf anderen Laufwerken als C: installiert werden. Aber, und das gilt auch für Installationen auf C:
- der Installationspfad des BCB selbst sowie die Projektpfade sollten keine Verzeichnisse enthalten,
deren Name mit '+' endet (wie zB. C++)
- Pfade und Dateinamen sollten kein ' enthalten (Hochkomma/Apostroph)
- Pfade und Dateinamen sollten kein - enthalten (Minus-Zeichen, kann in Verbindung mit dem
nachfolgenden Buchstaben als Linker-Switch misinterpretiert werden)
Das alles ist natürlich nur dann zu überprüfen oder zu korrigieren, wenn es tatsächlich entsprechende Probleme gibt.
[ Dieser Beitrag wurde am 10.05.2003 um 16:36 Uhr von Jansen editiert. ]
Noch ein kleines Update zur Auswertung der Message (inspiriert von diesem Newsgroup-Beitrag):
#include <dbt.h>
void __fastcall TForm1::WMDeviceChange(TMessage &Message)
{
PDEV_BROADCAST_HDR pDummy = (PDEV_BROADCAST_HDR)(Message.LParam);
if ((Message.WParam == DBT_DEVICEREMOVECOMPLETE || // Medium entfernt oder
Message.WParam == DBT_DEVICEARRIVAL) && // Medium geladen, und
pDummy->dbch_devicetype == DBT_DEVTYP_VOLUME) // ist log. Laufwerk
{
DriveComboBox1->TextCase = DriveComboBox1->TextCase;
}
}
Damit wird sichergestellt, dass der Refresh nur dann auftritt, wenn es sich um ein Laufwerk handelt. Denn die Message wird auch dann verschickt, wenn andere Devices wie zB. serielle Ports etc. verändert werden.
[ Dieser Beitrag wurde am 09.03.2002 um 11:12 Uhr von Jansen editiert. ]
Was ich noch vergessen habe: Leider funzt das nicht in der Taskleiste, auch nicht in der Statusleiste, sondern nur dort, wo Canvas zur Verfügung steht. Dafür sieht es aber flüssiger aus.