library mtrcnc32;
{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der
ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
Informationen als PChar- oder ShortString-Parameter übergeben. }
uses
SysUtils, Classes, Windows;
{$R *.res}
function GetTempFolder: AnsiString;
var
Buf:
array[0..MAX_PATH]
of AnsiChar;
begin
GetTempPath(SizeOf(Buf), @Buf);
Result := Buf;
if Result <> '
'
then if AnsiLastChar(Result)^ <> '
\'
then Result := Result + '
\';
end;
function Speichern(GCode: PChar):Boolean;
stdcall;
var
Datei: Integer;
Buffer: PChar;
F, Fehler, Text:
String;
begin
Result := True;
Text := GCode;
F := GetTempFolder + '
paddydat';
Datei := FileCreate(F, fmCreate);
if Datei > 0
then
begin
Buffer := PChar(Text);
FileSeek(Datei, 0, 0);
FileWrite(Datei, Buffer^, Length(Text));
FileClose(Datei);
end else
begin
Fehler := '
Eine andere Anwendung hält die Datei "paddydat" geöffnet!' + #13;
Fehler := Fehler + '
Aus diesem Grund wird beim Beenden dieses Tools' + #13;
Fehler := Fehler + '
nicht der angezeigte Text aus diesem Tool eingefügt' + #13;
Fehler := Fehler + '
Schliessen Sie die Anwendung welche die "paddydat"' + #13;
Fehler := Fehler + '
geöffnet hält und somit den Schreibzugriff sperrt und' + #13;
Fehler := Fehler + '
versuchen Sie es erneut.';
MessageBox(0, PChar(Fehler), '
Problem', MB_OK);
Result := False;
end;
end;
procedure Pruefen(Zahl: PChar;
var Start, Laenge: Integer);
stdcall;
var
Puffer1, Puffer2:
String;
KommaPos, MinusPos: Integer;
begin
Puffer1 := Zahl;
KommaPos := Pos('
.', Puffer1);
MinusPos := Pos('
-', Puffer1);
if MinusPos > 0
then Puffer2 := Copy(Puffer1, MinusPos + 1, KommaPos - 2)
else
Puffer2 := Copy(Puffer1, MinusPos, KommaPos - 1);
if Length(Puffer2) > 3
then
begin
Start := MinusPos;
if MinusPos > 0
then Laenge := KommaPos - 2
else Laenge := KommaPos - 1;
end;
Puffer2 := Copy(Puffer1, KommaPos + 1, Length(Puffer1) - KommaPos + 1);
if Length(Puffer2) > 3
then
begin
Start := KommaPos;
Laenge := Length(Puffer1) - KommaPos;
end;
end;
exports
Speichern, Pruefen;
begin
end.