AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal Delphi Unit Lazarus lauffähig machen
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Unit Lazarus lauffähig machen

Ein Thema von Luckie · begonnen am 20. Dez 2009 · letzter Beitrag vom 20. Dez 2009
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Delphi Unit Lazarus lauffähig machen

  Alt 20. Dez 2009, 07:46
Ich versuche gerade die Unit im Anhang für Lazarus lauffähig zu bekommen. Scheitere aber noch an folgen den fehlern:
Zitat:
units\MpuTools.pas(701,24) Hint: Local variable "Msg" does not seem to be initialized
units\MpuTools.pas(772,30) Hint: Local variable "ft" does not seem to be initialized
units\MpuTools.pas(874,25) Error: Incompatible type for arg no. 1: Got "OPENFILENAME", expected "LPOPENFILENAME"
units\MpuTools.pas(901,25) Error: Incompatible type for arg no. 1: Got "OPENFILENAME", expected "LPOPENFILENAME"
units\MpuTools.pas(925,23) Error: Illegal type conversion: "ShortString" to "^Char"
units\MpuTools.pas(929,41) Error: Incompatible type for arg no. 1: Got "BROWSEINFO", expected "LPBROWSEINFO"
units\MpuTools.pas(983,16) Hint: Local variable "bi" does not seem to be initialized
units\MpuTools.pas(988,25) Warning: Local variable "ca" does not seem to be initialized
units\MpuTools.pas(989,20) Error: Illegal type conversion: "ShortString" to "^Char"
units\MpuTools.pas(992,41) Error: Incompatible type for arg no. 1: Got "BROWSEINFO", expected "LPBROWSEINFO"
units\MpuTools.pas(1030,16) Hint: Local variable "bi" does not seem to be initialized
units\MpuTools.pas(1039,41) Error: Incompatible type for arg no. 1: Got "BROWSEINFO", expected "LPBROWSEINFO"
units\MpuTools.pas(1209,50) Error: Call by var for arg no. 2 has to match exactly: Got "WIN32_FIND_DATAW" expected "WIN32_FIND_DATA"
units\MpuTools.pas(1212,14) Warning: Local variable "wfd" does not seem to be initialized
units\MpuTools.pas(1212,75) Hint: Converting the operands to "Int64" before doing the add could prevent overflow errors.
units\MpuTools.pas(1222,32) Error: Illegal type conversion: "ShortString" to "^Char"
units\MpuTools.pas(1242,32) Error: Illegal type conversion: "ShortString" to "^Char"
units\MpuTools.pas(1261,66) Hint: Function result variable does not seem to be initialized
units\MpuTools.pas(1271,67) Hint: Function result variable does not seem to be initialized
units\MpuTools.pas(1305,22) Hint: Local variable "SizeWritten" does not seem to be initialized
units\MpuTools.pas(1320,41) Error: Identifier not found "TNonClientMetricsW"
units\MpuTools.pas(1320,41) Error: Error in type definition
units\MpuTools.pas(1322,13) Error: Illegal qualifier
units\MpuTools.pas(1322,48) Error: Identifier not found "TNonClientMetricsW"
units\MpuTools.pas(1323,74) Error: Identifier not found "TNonClientMetricsW"
units\MpuTools.pas(1366,28) Error: Illegal type conversion: "ShortString" to "^Char"
units\MpuTools.pas(1373,16) Hint: Local variable "BytesRead" does not seem to be initialized
units\MpuTools.pas(1372,47) Hint: Local variable "ImageDosHeader" does not seem to be initialized
units\MpuTools.pas(1384,48) Hint: Local variable "ImageNtHeaders" does not seem to be initialized
units\MpuTools.pas(1419,73) Warning: Mixing signed expressions and longwords gives a 64bit result
units\MpuTools.pas(1419,73) Hint: Converting the operands to "Int64" before doing the multiply could prevent overflow errors.
units\MpuTools.pas(1433,42) Error: Expression type must be class or record type
units\MpuTools.pas(1434,34) Error: Identifier not found "VirtualAddress"
units\MpuTools.pas(1435,33) Error: Identifier not found "VirtualAddress"
units\MpuTools.pas(1435,49) Error: Identifier not found "SizeOfRawData"
units\MpuTools.pas(1437,47) Error: Identifier not found "PointerToRawData"
units\MpuTools.pas(1437,65) Error: Identifier not found "VirtualAddress"
units\MpuTools.pas(1451,51) Hint: Local variable "ResDirTable" does not seem to be initialized
units\MpuTools.pas(1459,56) Hint: Local variable "FileTime" does not seem to be initialized
units\MpuTools.pas(1533,47) Hint: Local variable "Rect" does not seem to be initialized
units\MpuTools.pas(1536,8) Error: Illegal qualifier
units\MpuTools.pas(1536,8) Hint: may be pointer dereference is missing
units\MpuTools.pas(1536,8) Error: Illegal expression
units\MpuTools.pas(1536,8) Fatal: Syntax error, ";" expected but "identifier HWND" found
Wenn mir da jemand helfen könnte. Und es sollte wenn möglich alles Unicode sein.

Klasse wäre natürlich auch, wenn man sie auch unter Delphi zum Laufen bekäme.
Angehängte Dateien
Dateityp: pas mputools_124.pas (62,3 KB, 12x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
947 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Delphi Unit Lazarus lauffähig machen

  Alt 20. Dez 2009, 17:55
Hi Lukie,

so wie es aussieht, funktioniert die Sache einwenig anders als unter Delphi.

In OpenFile und SaveFileAs muss der Aufruf in der Art:
Delphi-Quellcode:
  if GetOpenFileName(@ofn) then
    result := ofn.lpstrFile;
Zu mindestens mault der Compiler nicht mehr, ob das Ergebnis stimmt ist erst zu sehen wenn die Unit 'durchgeht'.
Es wird wohl noch ein wenig dauern...

Viele Grüße

Alter Mann
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Delphi Unit Lazarus lauffähig machen

  Alt 20. Dez 2009, 18:11
Du solltest eventuell auch folgendes vor dem {$asmmode} einfügen:

Delphi-Quellcode:
{$ifdef fpc}
  {$mode delphi}{$H+}
{$endif}
Das könnte zumindest ein paar der Fehler beseitigen.

Nichtsdestotrotz hast du dir da zu Beginn einen ziemlich harten Brocken ausgesucht

EDIT:
Mir fällt grad auf, dass da einige Interface Funktionen nicht mit deren Implementierung übereinstimmen:

z. B. Interface:
function Ansi2OEM(AnsiString: string): string; Implementierung:
function Ansi2OEM(AnsiString: WideString): WideString; Delphi ist hier seeeeeehhhhhrrrrr tolerant. FPC ist hier strikter, was ich allerdings auch gut finde!

EDIT2:
Ok... kompiliert nun. Veränderte Unit im Anhang. Einige (Hilfs)Funktionen kann man für FPC denke ich noch ifdefen.

Gruß,
Sven
Angehängte Dateien
Dateityp: pas mputools_794.pas (60,7 KB, 6x aufgerufen)
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Delphi Unit Lazarus lauffähig machen

  Alt 20. Dez 2009, 22:31
Zitat von JamesTKirk:
EDIT:
Mir fällt grad auf, dass da einige Interface Funktionen nicht mit deren Implementierung übereinstimmen:

z. B. Interface:
function Ansi2OEM(AnsiString: string): string; Implementierung:
function Ansi2OEM(AnsiString: WideString): WideString;
Ja, ich war gerade dabei alles auf WideStriung umzustellen.

Vielen Dank schon mal für deine Arbeit, werde ich mir mal angucken.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#5

Re: Delphi Unit Lazarus lauffähig machen

  Alt 20. Dez 2009, 22:42
Hallo Luckie.

Beigefügt, Compiliert das Ding mal unter FPC.

lg. Astat
Angehängte Dateien
Dateityp: rar filesplitter5_7_352.rar (173,5 KB, 6x aufgerufen)
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Delphi Unit Lazarus lauffähig machen

  Alt 20. Dez 2009, 22:53
Jetzt prügelt ihr euch aber drum, was?

Werde ich mir natürlich auch angucken. Was hast du konkret gemacht? Und welche Unit hast du als Grundlage benutzt? Meine oder die von Kirk?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#7

Re: Delphi Unit Lazarus lauffähig machen

  Alt 20. Dez 2009, 23:34
Zitat von Luckie:
Jetzt prügelt ihr euch aber drum, was?
Naja, ist ja nicht irgendjemand der da was braucht!!!!!

Hab die Kirk geänderte mpu verwendet, danach einfach wild alles gecastet, und Compiler Warnings mal ignoriert.
Sollte man unter Lazarus zwar ernster nehmen als unter Delphi, aber schlampig wie ich bin "g".

lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:43 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