Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
MmVisual
Beiträge: 1639
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4.4 FPC 3.2.2)
CPU-Target: 32/64Bit

Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von MmVisual »

Hallo,

Ich habe mit Lazarus große Probleme, nicht mit Lazarus oder FPC an sich, sondern das Debuggen funktioniert nicht richtig.
Siehe Beitrag: http://www.lazarusforum.de/viewtopic.ph ... 170#p24707" onclick="window.open(this.href);return false;

Leider sind noch einige Fehler drin die mit Lazarus nicht debuggt und gelöst werden können, daher möchte ich erstmal alles in Delphi zum laufen bekommen.

Wie kann ich möglichst einfach das Projekt auf Delphi umstellen?

LFM in DFM hab ich schon umbenannt. Aber es sind sehr viele TZQuery mit definierten Feldern drin. Dabei hat Delphi wahllost jede Menge raus geschmissten, auch die Events dazu. Kompillieren konnte ich nach vielen Änderungen, aber viele Komponenten sind jetzt auf der Form verschoben.

Wie ich das manuell richten kann weiß ich selbst, aber gibt es nicht etwas automatisches, so dass ich nicht erst jedes einzelne anfassen muss, und dabei noch womöglich Fehler entstehen?

Vielen Dank für Eure Hilfe.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von Christian »

Da musst du wohl erst einen Converter basteln. ich seh den Sin darin aber nicht wirklich, es gibt mittlerweile einige Projekte die die Grössenordnung von Lazarus selbst annehmen und dort gibt es auch keine Probleme mit dem debuggen. Den Bug den du in ZeOS hattest hab ich schlichtweg behoben und den ZeOS projekt schon vor 3 Monaten zur Verfügung gestellt scheint sich leider niemand drum zu bemühen den einzupflegen.
Das ist übrigends auch der richtige Weg und das Problem hat nichts mit Lazarus debugger zu tun. Bei Exceptions wird auch unter Delphi der Debugger aufgerufen ...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von Euklid »

Hallo MmVisual,

da sich meines Wissens weder Borland, noch Codegear, noch wer im Moment für Delphi verantwortlich ist die Mühe gemacht hat, einen Lazarus-nach-Delphi-Konvertierer zu schreiben, bleibt dir zur Zeit nichts anderes übrig, als den mühsamen Weg "per Hand" zu gehen.

Um noch ein paar persönliche Worte zu verlieren: Lazarus befindet sich auf einem aufsteigenden Ast. D.h. es ist zu erwarten, dass die Unterstützung externer Komponenten stetig besser wird. Bei Delphi habe ich derzeit eher das Gefühl, dass es leider in die andere Richtung geht.

Viele Grüße, Euklid

MmVisual
Beiträge: 1639
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4.4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von MmVisual »

Ich habe ZeOS 6.6.4 und damit kommt der Fehler.

Aber ich habe das Gefühl, es liegt nicht an ZeOS, sondern viel mehr an der "FloatToStr" Routine, die ZeOS aufruft. Ich bekomme ähnliche Fehlermeldungen auch bei einem BoolToStr. Diese Routinen rufen allesamt im Hintergrund die gleiche Routine auf, ich bin mir nicht ganz sicher, ich glaube die heißt "Val" oder so ähnlich.

@Christian
Kannst Du mir den geänderten Code posten, dann binde ich das bei mir selbst ein und ich Teste es nochmal unter Lazarus

@Euklid
Ich sehe es auch so, dass Lazarus die Zukunft ist und Delphi in den trash wandern wird. Alle neuen Projekte mache ich nur noch mit Lazarus.
Nur leider bin ich bei einem Projekt an die Grenzen des Debuggens gestoßen. (Multithred, Verschachtelte Zugriffe, usw.) Mit Delphi ist das Debuggen (noch) einen Tick besser als mit GDB, und jetzt gerade brauche ich diesen, weil Lazarus gnadenlos abstürzt und aus dem Speicher verschwindet. Es bleibt nur noch eine in GDB hängende Applikation, die man mit Taskmanager (kill GDB) weg kriegt.

Der Vorteil von dem neuen Lazarus ist vor allem der Unicode Zeichensatz, den Delphi wohl niemals erhalten wird.

Ich möchte auch nur mit Delphi meinen Code in Ordnung kriegen, später geht es dann wieder mit Lazarus weiter.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von Christian »

Ich möchte auch nur mit Delphi meinen Code in Ordnung kriegen, später geht es dann wieder mit Lazarus weiter.
vergiss das mal ganz schnell das ständig hin und herzuconvertieren macht mehr arbeit als ein rewirte der Applikation.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
Garfield
Beiträge: 225
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.4 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von Garfield »

MmVisual hat geschrieben:Der Vorteil von dem neuen Lazarus ist vor allem der Unicode Zeichensatz, den Delphi wohl niemals erhalten wird.
Delphi 2009. Sieht ganz gut aus. 350-400 € als Update. Mir prersönlich zum Schreiben von Freeware zu teuer. SSL gibt es schon für ~110 €.
http://cc.codegear.com/Free.aspx?id=26308" onclick="window.open(this.href);return false;
MmVisual hat geschrieben:Ich möchte auch nur mit Delphi meinen Code in Ordnung kriegen, später geht es dann wieder mit Lazarus weiter.
Würde ich nicht machen. Viel zu viel Arbeit. Dann eher die Routinen, in welchen der Fehler vermutet wird, mit denen aus Delphi austauschen bzw nur vergleichen.
Gruß Garfield

MmVisual
Beiträge: 1639
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4.4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von MmVisual »

Ich habe die Fehlermeldung "EConvertError" auf dem Bildschirm. (Siehe Grafiken)
Und jetzt hab ich keine Ahnung wo ich ansetzen soll.

Also erst kommt die Meldung "Bild1", dann "Bild2" Wenn ich nun F7 drücke, dann läuft die Applikation einfach weiter und springt nicht zur Zeile.

Wie kann ich hier in Lazarus den Fehler eingrenzen, bzw. was kann ich machen?

Im "Bild3" habe ich den Aufrufstack angehängt.

Vielen Dank für eure Hilfe.
Dateianhänge
Bild3.png
Bild3.png (9.39 KiB) 3357 mal betrachtet
Bild2.png
Bild2.png (7.73 KiB) 3614 mal betrachtet
Bild1.png
Bild1.png (6.33 KiB) 3614 mal betrachtet
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
Garfield
Beiträge: 225
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.4 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von Garfield »

Sieht so aus, als würdest Du einer

Code: Alles auswählen

Function StrToFloat(Const S : String) : Extended;
einen leeren String übergeben. Alternativ könntest Du

Code: Alles auswählen

Function TryStrToFloat(Const S : String; Var Value: Extended): Boolean;
verwenden. S ist Dein String, Value ist die zurückgegebene Zahl und der Ergebniswert der Function bedeutet, ob die Umwandlung erfolgreich war.
Gruß Garfield

MmVisual
Beiträge: 1639
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4.4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von MmVisual »

Ja, natürlich ich kenne all diese Funktionen.

Ich habe extra noch den "Aufrufstack" als Grafik mit angehängt. Dort werden auch in der Sysutils diese Funktionen benutzt. Aber als dritten Aufrufpunkt steht nur ein "??". Also wie kann ich weiter suchen um diese Aurufende Zeile in einem Code mit über 100000 Zeilen zu finden?

Ich habe auch schon in allen Events, die mit der Datenbank zu tun haben Breakpoints gesetzt, aber nirgends springt der rein. Direkt nach QueryXXX.Open kommt der Fehler.

Ich möchte ja nicht, dass jemand mir Zeigt wo da ein Fehler ist, sondern nur wie ich den Suchen/Finden kann. Gibt es noch weitere Funktionen in Lazarus, irgendwie muss man doch die Nuss knacken können.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Alfred
Beiträge: 101
Registriert: Do 22. Nov 2007, 20:06
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: München

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von Alfred »

Hallo mvisual,

größere Programme erhalten bei mir folgende Struktur:

am Anfang setzte ich eine globalge Variable ndebug = 0;

in jede Unterprozedur kommt am Anfang eine
if-Abfrage mit

if ndebug = 1 then
begin
Showmessage('Modulname');
end;

Zum debuggen setze ich den ndebug auf 1
und dann bekommst Du das Modul wo es
knallt.

Wenn ich das Modul gefunden habe, gehe ich einfach mit
Showmessage('irgend ein TexT') je Zeile auf Suche.

Gruß
Alfred

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von Christian »

Wiso benutzt du nicht einfach den Debugger ? Bei einer Exception ladest du dann doch automatisch auf der Zeile die die Exception ausgelöst hat ?!
Und benutzt den sonst keiner ? Wozu brauch man solche komische konstrukte Alfred ?! Dazu kann man sich selbst in der App beim Kunden den Aufrufstack bei einer Exception ausgeben lassen bei mir landet der sogar mit im Bugtracker automatisch dann hab ich bs zur Zeile wo die Exception ausgelöst wurde sogar vom Kunden alles.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
Garfield
Beiträge: 225
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.4 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von Garfield »

Da keine Quelle und keine Zeile angegeben sind, dürfte der Debugger auch Schwierigkeiten haben, irgendwo hinzuspringen.
MmVisual hat geschrieben:Ich habe auch schon in allen Events, die mit der Datenbank zu tun haben Breakpoints gesetzt, aber nirgends springt der rein. Direkt nach QueryXXX.Open kommt der Fehler.
Wenn Du dort StrToFloat hast, ersetze sie testweise durch TryStrToFloat.
Gruß Garfield

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7201
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von af0815 »

MmVisual hat geschrieben:... Gibt es noch weitere Funktionen in Lazarus, irgendwie muss man doch die Nuss knacken können.
ZeosDb mit debuginfos kompiliert oder ohne ? Voreinstellung wird sicherlich ohne sein.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von mschnell »

Christian hat geschrieben:Wiso benutzt du nicht einfach den Debugger ? Bei einer Exception ladest du dann doch automatisch auf der Zeile die die Exception ausgelöst hat ?!
DAS wäre schön. !!!! Bei uns funktioniert es aber leider meistens nicht. Bei Delphi übrigens auch oft nicht,
Der Grund ist vermutlich oft, dass die ursprüngliche Execption in ein einer Funktion auftritt, deren Quellcode nicht im Projekt eingebunden ist, sondern die nur aufgerufen wird. Der Mechanismus schafft es dann nicht, die Zeile in den Sourcen des Projektes zu finden, die die unterste bekannte Quellcode-Zeile im Call-Stack war.
-Michael

MmVisual
Beiträge: 1639
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4.4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Wie kann ich ein Lazarusprojekt auf Delphi7 umstellen?

Beitrag von MmVisual »

Wenn ich eine neue Komponente installiere, dann wird das doch in Lazarus eingebunden und man muss diese neu erstellen, also meine Lazarus.exe ist gerade 85MB groß. Darin sollten auch alle Debu-Infos drin sein. Oder muss ich die Komponente anders installieren?

Der Befehl QueryXXX.Open führt ja eine Menge aus. Soll ich alle FloatToStr in die Try-Version ersetzen? Ich weiß nicht ob es da noch unangenehme Seiteneffekte gibt, die anders in der Komponente abgefangen sind.

@mschnell: GENAU. DAS wäre genial !!! Delphi zeigt wenigstens noch eine Assembler-Ansicht von z.B. der Kernel.dll, obwohl das auch nicht wirklich weiterhilft. Zumindest kann man dann weiter steppen mit F7 bis man wieder Code sieht. Die Assembler-Ansicht in Lazarus hab ich noch nicht gefunden :(.

Gibt es irgend wo eine Funktion, mit der man alle CALL Aufrufe, also auch die, die in Assembler irgendwo drin sind, sieht? Nur das ist echt, die Prozeduraufrufe und Funktionen von Pascal ist ja nur ein Bruchteil.
Der Computer ist halt leider keine Paszelle (wie bei Java die Jazelle), sodern kann nur Assembler.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten