Einzelnen Beitrag anzeigen

Benutzerbild von Armageddon
Armageddon

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

Re: String aus Anwendung in Dll übergeben und zurück

  Alt 30. Jan 2005, 01:05
Hmmm, jo sieht kurz aus und erfüllt sicher auch den Zweck nur steig ich da noch nicht ganz durch. Muss ich mir mal nochmal anschauen wenn ich ausgeschlafen bin. Mit einem MemoryStream hab ich auch schon experimentiert aber das hat auch nicht so hingehauen wie ich gern wollte. Aber irgendwie muss es ja schliesslich gehen.

Könntest mir mit dem hier ein kleines Beispiel mit Datei machen und zum runterladen anhängen?

Das sollte in die Dll und bei bedarf dynamisch geladen werden:

Delphi-Quellcode:
procedure EditKommaAusgang(Zeichen:String; var Ergebnis: String); stdcall;
var
  T, VKT, HKT, B: String;
  MP, KP: Integer;
  VKTL, HKTL: Boolean;
begin
  VKTL := False;
  HKTL := False;
  T := Zeichen;
  if T = '.then T := '0.0';
  if T = '-then T := '0.0';
  if T = '-.then T := '0.0';
  if Pos('.', T) = 0 then T := T + '.';
  MP := Pos('-', T);
  KP := Pos('.', T);
  if KP > 0 then
  begin
    VKT := Copy(T, 1, KP - 1);
    if MP > 0 then VKT := Copy(VKT, 2, Length(VKT) - 1);
    HKT := Copy(T, KP + 1, Length(T) - KP);
//Vorkommatext Nullen kürzen
    B := Copy(VKT, 1, 1);
    while B = '0do
    begin
      VKT := Copy(VKT, 2, Length(VKT) - 1);
      B := Copy(VKT, 1, 1);
      if Length(VKT) = 0 then VKTL := True;
    end;
//Hinterkommatext Nullen kürzen
    B := Copy(HKT, Length(HKT), 1);
    while B = '0do
    begin
      HKT := Copy(HKT, 1, Length(HKT) - 1);
      B := Copy(HKT, Length(HKT), 1);
      if Length(HKT) = 0 then HKTL := True;
    end;
    T := '';
    if MP > 0 then T := '-';
    T := T + VKT + '.' + HKT;
  end;
  if T = '.then if (VKTL = True) or (HKTL = True) then T := '0.0else T := '';
  if T = '-.then if (VKTL = True) or (HKTL = True) then T := '0.0else T := '';
  Ergebnis := T;
end;
Und das hier ist im Programm:

Delphi-Quellcode:
procedure TForm1.Vorschau();
var
  V510: String;
begin
  EditKommaAusgang('00123.6329000', V510);
end;
wobei es auch eine function sein kann und keine procedure. In dem Fall wäre es egal. Im idealfall müßte als String ja 123.6329 zurück kommen da ich ja alle nullen davor und danach wegkill. Nur wie stell ich das jetzt am besten an. Wenn mir dazu mit dem Beispiel hier eine Datei machen könntest wär das supi. Hab Delphi 7 Enterprise.

Tausend Dank.
  Mit Zitat antworten Zitat