AGB  ·  Datenschutz  ·  Impressum  







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

Strings in Delphi in DLL

Ein Thema von Blatt · begonnen am 21. Okt 2010 · letzter Beitrag vom 21. Okt 2010
 
Blatt

Registriert seit: 8. Sep 2010
17 Beiträge
 
#7

AW: Strings in Delphi in DLL

  Alt 21. Okt 2010, 11:17
Zitat:
außerdem fehlt auch noch der Zugriff auf Seite der EXE, welchen du uns vorenthältst.
Ne, das ist einfach nur eine Nachricht über Winsock, die halt so wie das Record aussieht, zuerst ein Word, dann ein Nullterminierter String.

Ich möchte diesen String halt als Delphi-String haben. Die Adresse ist [Winsock-buf-ptr] + OffsetOf(Record-buf), deswegen -- bar := Pfoo(buf); lol := String(PChar(@bar.buf)); --


Und weil das mit den Strings nicht funktionierte, habe ich das jetzt mit PChars gemacht.
Und ein PChar zeigt bei 'hello 3' auf das '3' -- MessageBox(0,numberptr,0,0); -- funktioniert also.
Bei -- MessageBox(0,PChar(StrToInt(String(numberptr))),0, 0); -- stürzt das Programm allerdings ab..




Ich versuche gerade den Fehler in einer Standalone-Dll zu bekommen (also ohne den Client und die Winsock-Nachrichten):
Delphi-Quellcode:
procedure test(buf: PChar);
var
  bar: Pfoo;
  lol: string;
begin
  bar := Pfoo(buf);
  lol := String(PChar(@bar.buf));
  lol := Parse(':', lol, 2);
  if Parse(' ', lol, 1) = 'hellothen
    MessageBox(0,'','',0);
  MessageBox(0,PChar(lol), PChar(Parse(' ', lol, 1)),0);
end;

procedure main(reason: dword);
var
  x: Pointer;
  a: Pfoo;
  l:integer;
begin
  case reason of
    1234:
    begin
      l:=Length('');
      GetMem(x, 8);
      a := x;
      a.other := 2;
      Move('hello', a.buf, 6);

      test(PChar(x));
    end;
  end;
end;

begin
  DLLProc := @main;
  main(1234);
end.
Und da ist jetzt das Problem, dass bei -- lol := Parse(':', lol, 2); -- kein leerer String, sondern 0 zurückgegeben wird.
Deswegen kommt bei -- if S[Length(S)] <> Char then -- (aus der Parse-Funktion), aufgerufen durch -- if Parse(' ', lol, 1) = 'hello' then --, ein Fehler, da S = 0/nil ist.
Aber das ist glaub ich wieder ein anderer Fehler.....



Ist auch egal, ich beschreibe das alles viel zu schlecht, muss ich halt gucken, was ich mache
Danke für eure Hilfe!
  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 07:37 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