AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ini-Datei in DB-Feld verlegen

Ein Thema von baumina · begonnen am 31. Jul 2014 · letzter Beitrag vom 31. Jul 2014
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#21

AW: Ini-Datei in DB-Feld verlegen

  Alt 31. Jul 2014, 14:58
d.h. ich brauche nochmal eine Funktion in der dll, die mein Hauptprogramm erst mal nach der zu erwartenden Größe fragt?
Jein, das kann man auch mit einer Funktion machen, die als Rückgabewert die Größe rausgibt, die man dann natürlich auswertet, die Größe anpasst und die Funktion nochmal aufruft.

Oder man erfragt (bekommt) statt der Csllback-Funktion ein Interface und arbeitet mit diesem Interface in der DLL.
Nicht unbedingt eine neue Funktion, aber neue Parameter.
Der Rückgabewert reicht doch, wenn man den auch auswerten würde
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: Ini-Datei in DB-Feld verlegen

  Alt 31. Jul 2014, 15:05
Mein Problem ist, dass ich nicht alle DLLs gleichzeitig umstellen mag, das sind mir zu viele, zudem einige noch Delphi 2007 sind und noch nicht mit Delphi XE getestet wurden. Deswegen wollt ich vermeiden, dass ich in meinem Hauptprogramm an der Stelle was ändere.

Ich denke das hat so auf die Schnelle alles keinen Zweck (ich hab nur noch 6 Stunden Arbeitszeit), in meinem Hirn dreht sich alles, da kann nur Mist dabei rauskommen.

Schieb ich mal auf nach meinen Urlaub, dann hab ich auch wieder mehr Nerv.

EDIT: @Sir Rufo Mir scheint ich sollte mich mal mit Interfaces beschäftigen, da du so begeistert nahezu alles damit löst.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)

Geändert von baumina (31. Jul 2014 um 15:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#23

AW: Ini-Datei in DB-Feld verlegen

  Alt 31. Jul 2014, 15:15
@Sir Rufo: sie hat nunmal mehrere Strings, aber nur einen Rückgabewert. Da sollte dieser IMO lieber einen ErrorCode zurückgaben statt einer Längenangabe.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#24

AW: Ini-Datei in DB-Feld verlegen

  Alt 31. Jul 2014, 15:17
Ich denke das hat so auf die Schnelle alles keinen Zweck (ich hab nur noch 6 Stunden Arbeitszeit), in meinem Hirn dreht sich alles, da kann nur Mist dabei rauskommen.
Gibt's bei euch etwa kein Kompilierverbot vor Urlaubsantritt
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: Ini-Datei in DB-Feld verlegen

  Alt 31. Jul 2014, 15:19
@Sir Rufo: sie hat nunmal mehrere Strings, aber nur einen Rückgabewert. Da sollte dieser IMO lieber einen ErrorCode zurückgaben statt einer Längenangabe.
Ja, der Rückgabewert ist ein ErrorCode, der wird nur aus ... frag mich nicht nach Gründen ... hier nicht ausgewertet.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#26

AW: Ini-Datei in DB-Feld verlegen

  Alt 31. Jul 2014, 15:23
Gibt's bei euch etwa kein Kompilierverbot vor Urlaubsantritt
Ich bin Alleinkompilierer, aber mir gefällt die Idee, ich sollte es mir selbst auferlegen.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#27

AW: Ini-Datei in DB-Feld verlegen

  Alt 31. Jul 2014, 15:25
Ohne Gewähr schnell heruntergetippelt:
Delphi-Quellcode:
library BufferDLL;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss die erste
  Unit in der USES-Klausel Ihrer Bibliothek UND in der USES-Klausel Ihres Projekts
  (wählen Sie 'Projekt-Quelltext anzeigen') sein, wenn Ihre DLL Prozeduren oder Funktionen
  exportiert, die Strings als Parameter oder Funktionsergebnisse übergeben. Dies
  gilt für alle Strings, die an oder von Ihrer DLL übergeben werden, auch für solche,
  die in Records und Klassen verschachtelt sind. ShareMem ist die Interface-Unit zur
  gemeinsamen BORLNDMM.DLL-Speicherverwaltung, die zusammen mit Ihrer DLL
  weitergegeben werden muss. Übergeben Sie String-Informationen mit PChar- oder ShortString-Parametern, um die Verwendung von BORLNDMM.DLL zu vermeiden.
}


uses
  Windows,
  SysUtils;

{$R *.res}

function SomeTest(Param1: PAnsiChar; var Param1Len: integer; Param2: PAnsiChar;
  var Param2Len: integer): integer; stdcall;
const
  Result1 = 'Hallo Welt';
  Result2 = 'Wuppdi';
begin
  Result := 0;
  if Param1Len < Length(Result1) then
    begin
      Param1Len := Length(Result1);
      Result := ERROR_INSUFFICIENT_BUFFER;
    end;
  if Param2Len < Length(Result2) then
    begin
      Param2Len := Length(Result2);
      Result := ERROR_INSUFFICIENT_BUFFER;
    end;
  if Result = 0 then
    begin
      StrPCopy(Param1, Result1);
      StrPCopy(Param2, Result2);
    end;
end;

exports
  SomeTest;

begin

end.
Und der Aufruf:
Delphi-Quellcode:
function SomeTest(Param1: PAnsiChar; var Param1Len: integer; Param2: PAnsiChar;
  var Param2Len: integer): integer; stdcall; external 'BufferDLL.dll';

procedure TFormTest.ButtonTestClick(Sender: TObject);
var
  s1, s2: Ansistring;
  Len1, Len2: integer;
begin
  Len1 := 0;
  Len2 := 0;
  s1 := '';
  s2 := '';
  if SomeTest(nil, Len1, nil, Len2) = ERROR_INSUFFICIENT_BUFFER then
    begin
      SetLength(s1, Len1);
      SetLength(s2, Len2);
      if SomeTest(PAnsiChar(s1), Len1, PAnsiChar(s2), Len2) = 0 then
        ShowMessage(Format('%s%s%s', [s1, sLineBreak, s2]));
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#28

AW: Ini-Datei in DB-Feld verlegen

  Alt 31. Jul 2014, 15:45
Hm, in einem Rutsch geht das dann ja wohl auch nicht oder? Du rufst ja SomeTest zweimal auf.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#29

AW: Ini-Datei in DB-Feld verlegen

  Alt 31. Jul 2014, 15:48
Ja natürlich, erst ermittle ich die benötigten Stringlängen und dann erst die Strings. Das ist aber nicht unüblich.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#30

AW: Ini-Datei in DB-Feld verlegen

  Alt 31. Jul 2014, 15:52
Wenn ich mein Array nun einfach auf 10000 mache, was mir sicher gut reichen wird, schreien dann alle mit "Oh Gott, oh Gott, bist du wahnsinnig ...." auf?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 19:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz