AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Mehrere Ergebnisse aus Dll an Programm übergeben, aber wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Ergebnisse aus Dll an Programm übergeben, aber wie?

Ein Thema von Armageddon · begonnen am 29. Dez 2004 · letzter Beitrag vom 29. Dez 2004
 
Benutzerbild von Armageddon
Armageddon

Registriert seit: 30. Mär 2003
Ort: Wilflingen
158 Beiträge
 
#6

Re: Mehrere Ergebnisse aus Dll an Programm übergeben, aber w

  Alt 29. Dez 2004, 21:01
So hier noch der Code der Dll, im Hauptprogramm hätte ich gern die Werte von Start und Laenge bzw. noch mehr man kann ja nie genug kriegen:

Delphi-Quellcode:
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.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 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