Der Fehler Runtime Error 216 tritt auf, wenn das Programm beendet wird und es Fehler beim Abbau der Forms gibt.
Kontrollieren ob in der FormDestroy Methode das Formular auf nil gesetzt wurde.
type Tam_Form = class(TForm)
procedure FormDestroy(Sender: TObject);
end;
function am_Form: Tam_Form;
procedure am_Form_FreeAndNil;
implementation
{$R *.dfm}
var
Form: Tam_Form;
function am_Form: Tam_Form;
begin
if Form = nil then
Form := Tam_Form.Create(Application);
Result := Form;
end;
procedure am_Form_FreeAndNil;
begin
if Form <> nil then
FreeAndNil(Form);
end;
{ Tam_Form }
procedure Tam_Form.FormDestroy(Sender: TObject);
begin
inherited;
Form := nil;
end;
initialization
Form := nil;
finalization
am_Form_FreeAndNil;
end.
Tags: Delphi-Programmierung
Fileexists liefert für Dateien, die älter sind als Delphi 7 erlaubt (also vor dem 01.01.1970) den Wert FALSE.
function FileExists(const FileName: string): Boolean;
{$IFDEF MSWINDOWS}
begin
Result := FileAge(FileName) <> -1;
end;
{$ENDIF}
function FileAge(const FileName: string): Integer;
{$IFDEF MSWINDOWS}
var
Handle: THandle;
FindData: TWin32FindData;
LocalFileTime: TFileTime;
begin
Handle := FindFirstFile(PChar(FileName), FindData);
if Handle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
end;
end;
Result := -1;
end;
{$ENDIF}
Die Datei ist ein Foto und wurde von einer Kamera mit dem Datum 0 aufgenommen:
In den EXIF-Daten steht das Datum 01.01.1970
Das Dateidatum ist:
$ ls -l
-rw-r--r-- 1 wnf wnf 2815785 Nov 25 1961 PICT0003.JPG
Tags: Delphi-Programmierung
nachdem nun immer mehr Programme die Zusammenarbeit mit W2K verweigern, ist es an der Zeit mit der Entwicklungsumgebung auf eine Win7 Maschine umzuziehen.
1) Delphi 7 installieren (Ohne Interbase Client und ohne Rave)
1) Delphi 7 das erste Mal als Administrator starten und wieder beenden
1) Für den Ordner und alle Unterordner den Schreibschutz aufheben: c:\Program Files\Borland\Delphi7\Bin\
1) Delphi registrieren per Internet (Obwohl es schon sehr alt ist funktioniert die Registrierung noch)
1) Das Servicepack installieren d7_de_pro_upd1_1.exe
1) Das Rave Update installieren rave_be_5_0_8.exe
1) DelForEx installieren
1) Delphi starten
1) GExpert -Configuration
Perfect Layout einschalten
IDE konfigurieren
1) Tools - Umgebungsoptionen
Umgebungsvariablen für Verzeichnisse kauf,dsp,lwnf anlegen
Bibliothek - diverse Bibliothekspfade anlegen
1) Tools - Debuggeroptionen
Sprachexceptions EFIBInterbaseError hinzufügen
Bei Delphi-Exceptions stoppen auschalten
1) Packages installieren
1) kauf_lib\kauf_lib.bgb
1) kauf_lib\DevExpress5\DevExpress5.bpg
1) kauf_lib\xls_mini.dpk
1) dsp_lib\dsp.bgp
Dabei beachten: Für jede BPL-Datei muss das Ausgabe verzeichnis der Units auf ..\ bzw. ....\ gesetzt werden, so dass die *.dcu Dateien im Verzeichnis kauf_lib abgelegt werden.
1) Anpassungen an dcc.cfg in den Projektverzeichnissen vornehmen.
-aWinTypes=Windows;WinProcs=Windows;DbiProcs=BDE;DbiTypes=BDE;DbiErrs=BDE
-u"C:\Programme\Borland\Delphi7\lib";"C:\Programme\Borland\Delphi7\lib\Obj"
-u"c:\Programme\Borland\Delphi7\Rave5\Lib\"
-u"C:\wnf\dl7\dsp_lib"
-u"C:\wnf\dl7\dsp_lib\SynEdit"
-u"C:\wnf\dl7\dsp_lib\ML_LIB"
-u"C:\wnf\dl7\dsp_lib\dspFIB"
-u"C:\wnf\dl7\dsp_lib\Lizenz"
-u"C:\wnf\dl7\dsp_lib\rppro"
-u"C:\wnf\dl7\kauf_lib"
-u"C:\wnf\dl7\kauf_lib\DevExpress5"
-u"C:\wnf\dl7\wnf_tools"
-u"C:\wnf\dl7\wnf_vcl"
-i"C:\wnf\dl7\wnf_tools"
-lu"vcl;rtl;vclx;dbrtl;vcldb;vcldbx;"
-w-UNSAFE_TYPE
-w-UNSAFE_CODE
-w-UNSAFE_CAST
-w-SYMBOL_PLATFORM
-w-UNIT_PLATFORM
Tags: Delphi-Programmierung win7
Hier einige Antworten aus dem Embarcadero Webinar zu Firemonkey im September 2011
(Das ist nur ein Auszug, der für mich wichtigen Fragen und Antworten)
XXX- | Q: | Are there plans or efforts in the works to provide FireMonkey support on Linux and Android? | A: | Both of these platforms are on the roadmap. |
---|---|---|---|---|
XXX- | Q: | What data based controls are available in FM? | ||
A: | Most FireMonkey visual controls can be bound to data, objects and expressions using our new LiveBindings technology. |
XXX- | Q: | What can the ClientDataSet bind to? | A: | FireMonkey includes built-in component based access to MS SQL Server, Oracle, IBM DB2, MySQL, Sybase, Informix, InterBase and Firebird databases. And of course, FireMonkey's data access is native which offers high performance. Detailed feature matrices are available at: www.embarcadero.com/products/rad-studio |
---|---|---|---|---|
XXX- | Q: | Can I compile a 64 bit application on a 32 bit Delphi XE2 (installed on a 32 bit machine)? | ||
A: | Yes, you can build 64-bit applications using a 32-bit machine. However, you won’t be able to test them unless you use the Platform Assistant running on a 64-bit Windows machine or deploy the application to a Win64 machine. |
XXX- | Q: | Is there a solution for reports/printing in FireMonkey? | A: | There is currently no reporting solution available in FireMonkey. |
---|---|---|---|---|
XXX- | Q: | Does FireMonkey have TWebBrowser | ||
A: | An equivalent FireMonkey control is not available in this release. |
XXX- | Q: | I read in a blog that TActionList is not available in FM. Is that true? Any plans to add it? | A: | That is correct, but it is being considered for the roadmap. |
---|---|---|---|---|
XXX- | Q: | If all the code is standard VCL code is should port with little to no issues, correct? | ||
A: | Much of your application logic should be portable. However, user interfaces will need to be recreated with FireMonkey Forms and Controls. For migrating VCL forms to FireMonkey – check out Jeff Lefebvre’s blog post about MonkeyGroomer |
XXX-|Q:| Will support for Windows 8 Metro Style apps be available in the next major version of Delphi, depending when Windows 8 is actually released?
|A:| No announcement has been made for Windows 8 Metro Style apps in a particular version of Delphi.
Das funktioniert nur unter Win7 und ADO-Version 6.1
unter XP-SP3 und ADO-Version 2.8
kommt es zu einer einer Zugriffsverlertzung in SQLOLEDB.dll
beim zweiten Aufruf der Stored Procedure b9_Auslastung
aProc.Close;
aProc.ProcedureName := 'b9_Auslastung';
aProc.Parameters.Refresh;
aProc.Parameters.ParamByName('@Bearbeiter_ID').Value := aBearb_ID;
aProc.Parameters.ParamByName('@Stichtag').Value := aStichtag;
aProc.Prepared := TRUE;
aProc.Open;
Das funktioniert unter Win7 und ADO-Version 6.1
und unter XP-SP3 und ADO-Version 2.8
aProc.Close;
aproc.Parameters.Clear;
aProc.ProcedureName := 'b9_Auslastung';
aProc.Parameters.CreateParameter('@Bearbeiter_ID', ftInteger, pdInPut, 0, aBearb_ID);
aProc.Parameters.CreateParameter('@Stichtag', ftDate, pdInPut, 0, aStichtag);
aProc.Prepared := TRUE;
aProc.Open;
Tags: Delphi-Programmierung ADO
Wenn Delphi 2009 bei der Arbeit mit einem neuen Projekt beim Debuggen und Editieren rumzickt, dann liegt es daran, dass die Unit-Aliase für das Projekt nicht gesetzt sind:
WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE
[ screenshot_unitalias.png ]
Tags: Delphi-Programmierung