Lazarus zweite unabhängige Instanz?

Für Installationen unter Windows
br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Lazarus zweite unabhängige Instanz?

Beitrag von br_klaus »

Hallo,
ist es wohl möglich, mehrere Versionen von Lazrus-FPC gleichzeitig laufen zu lassen, die aber auch unterschiedliche Projektdateien haben können sollten (also in Windows zB in {users\<Name>\appdata\local\temp\lazarus1} bzw {...lazarus2})?
Wo (in welcher Unit, welcher Prozedur) wird denn dieses Verzeichnis im Programm geladen bzw erstellt? Vielleicht könnte man da ja noch eine Option einbauen für einen individuellen Namen, der dann in einer Optionen-Datei im {Lazaurus}-Verzeichnis gespeichert wird.
Bin inzwischen schon bei Lazarus 1.5 - FPC 3.1.1, heruntergeladen aus der Dropbox von Martok
(http://www.entwickler-ecke.de/topic_Laz ... 183,0.html bzw.
https://www.dropbox.com/sh/dx4p4869s5wq ... 1O39Mfob1a)

Herzlichen Dank!

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus zweite unabhängige Instanz?

Beitrag von theo »

Meinst du --primary-config-path ?

http://wiki.freepascal.org/Multiple_Lazarus

Lion
Beiträge: 186
Registriert: Mo 24. Mär 2014, 09:58

Re: Lazarus zweite unabhängige Instanz?

Beitrag von Lion »

1.5? Es wird ja noch am 1.3 gearbeitet, oder irre ich mich da? Und wann ist endlich die 1.4 raus?

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus zweite unabhängige Instanz?

Beitrag von theo »

Lion hat geschrieben:1.5? Es wird ja noch am 1.3 gearbeitet, oder irre ich mich da? Und wann ist endlich die 1.4 raus?

Nein, 1.3 ist jetzt 1.5 und die 1.4 ist im Anmarsch (RC1).

Lion
Beiträge: 186
Registriert: Mo 24. Mär 2014, 09:58

Re: Lazarus zweite unabhängige Instanz?

Beitrag von Lion »

theo hat geschrieben:
Lion hat geschrieben:1.5? Es wird ja noch am 1.3 gearbeitet, oder irre ich mich da? Und wann ist endlich die 1.4 raus?

Nein, 1.3 ist jetzt 1.5 und die 1.4 ist im Anmarsch (RC1).


Kann man 1.5 nicht offiziell irgendwie runterladen?

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: Lazarus zweite unabhängige Instanz?

Beitrag von br_klaus »

Lion hat geschrieben:1.5? Es wird ja noch am 1.3 gearbeitet, oder irre ich mich da? Und wann ist endlich die 1.4 raus?


Jedenfalls kann man sie unter ftp://freepascal.dfmk.hu/pub/lazarus/snapshots/ schon herunterladen (die letzten beiden Zeilen).

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: Lazarus zweite unabhängige Instanz?

Beitrag von br_klaus »

theo hat geschrieben:Meinst du --primary-config-path ?

http://wiki.freepascal.org/Multiple_Lazarus


Das, aber noch mehr. -pcp ist ja nur das Startverzeichnis für Lazarus. Aber die Programdateien mit environments.xml (oder so ähnlich) werden (zumindest in Windows) immer in einem Temp-Verzeichnis abgespeichert (eben unter C:\Users\...\lazarus. Diesen Verzeichnisnamen "lazarus" sollte man auch ändern können. Da sehe ich aber keine Möglichkeit dazu, oder irre ich mich?

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus zweite unabhängige Instanz?

Beitrag von theo »

br_klaus hat geschrieben:
theo hat geschrieben:Meinst du --primary-config-path ?

http://wiki.freepascal.org/Multiple_Lazarus

Da sehe ich aber keine Möglichkeit dazu, oder irre ich mich?

Ja, da irrst du. Wie der Name schon sagt, ist das der --primary-config-path.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Lazarus zweite unabhängige Instanz?

Beitrag von Michl »

br_klaus hat geschrieben:Aber die Programdateien mit environments.xml (oder so ähnlich) werden (zumindest in Windows) immer in einem Temp-Verzeichnis abgespeichert (eben unter C:\Users\...\lazarus. Diesen Verzeichnisnamen "lazarus" sollte man auch ändern können.
theo hatte es zwar eigentlich schon geklärt, doch auch unter Windows ist das kein Problem. Ich habe zur Zeit 3 parallele Lazarusversionen auf ein und dem selben Rechner (ein Laz. 1.2.6, ein "stabiles" Laz. 1.5 unter dem ich entwickle und ein Laz. 1.5, was ich zum testen von Patches nutze und gelegentlich wieder säubere und neu aufsetze). Alle nutzen unterschiedliche Configs, sonst hätte ich echt Probleme, wenn ich mir mal das "Wegwerf"-Lazarus zerschieße, dass ich dann mit meinem Projekt nicht weitermachen könnte.

Ich hatte dir auch schon mal gezeigt, dass es eigentlich recht einfach ist, parallele (Trunc-) Installationen zu erstellen: http://www.lazarusforum.de/viewtopic.php?p=68169#p68169

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: Lazarus zweite unabhängige Instanz?

Beitrag von af0815 »

Für weitere Installationen kann man auch 'fpcup' verwenden. Siehe Free Pascal Wiki zu fpcup

Voraussetzung ist die Installation von ein paar Tools wie z.B. svn. Das Programm installiert dir den aktuelle trunc von fpc und Lazarus und hält den auch aktuell, wenn man will.

Zum ändern des Startverhalten unter Winwows kann man sich auf dem Desktop einen Link machen, dann die Eigenschaften des Links aufrufen und unter Verknüpfung bei Ziel folgende Änderung machen: Ziel: C:\development\lazarus\startlazarus.exe --pcp=C:\development\config_lazarus
Damit wird die Konfiguration in das Developmentverzeichnis umgebogen und ist von allen anderen Konfigurationen unabhängig.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: Lazarus zweite unabhängige Instanz?

Beitrag von br_klaus »

Habe es jetzt versucht, mit startlazarus –pcp=C:\LazConfig\1.5-3.1.1, aber da tat sich zuerst einmal gar nichts neues, das Verzeichnis blieb leer (sollte ich da schon vorher einige Dateien hineinkopieren?), auch die Angabe des Verzeichnisses der Speicherung der einzelnen Sitzungen (user\<name>\appdata\pocal\lazarus) blieb unverändert, das mußte ich erst von Hand ändern zu C:\LazConfig\1.5-3.1.1. Jetzt werden da die Sitzungen gespeichert.
Ich mußte dann noch die Datei fpc.cfg von der alten Version in das neue Lazaurs-Verzeichnis C:\LAZ 1.5\lazarus... hinüberkopieren (natürlich entsprechend angepaßt).
Beim Starten hieß es dann: Package PrettyMessages nicht gefunden, habe diesen Eintrag gelöschtt.
Schließlich konnte ich eine einfache Anwendung (nur eine Form) starten.

Wie ich dann aber ein neues Package installieren wollte, gab es ein paar Probleme.
Es hieß da: Ein oder mehrere benötigte Packages wurden nicht gefunden. Siehe Package-Graphik für Details.
Aber diese Graphik ist (bei etwa 100 Packages) total unübersichtlich, auch auf der linken Seite konnte ich kein Package erkennen, das da fehlen sollte, fast alle waren ockergelb mit einem kleinen grünen Kreuz drinnen und da hieß es: Zustand: installieren beim nächsten Start. (Aber beim Neustart wurde nichts installiert...)
Schließlich, nach mehreren fruchtlosen Versuchen, sah ich bei einem der ockergelben Symbole ein kleines rotes Kreuz drinnen und ohne Reaktion beim Draufklicken, das mußte wohl das fehlende Package sein (wäre es nicht sinnvoller, auch ein Infofenster zeigen zu lassen mit der Angabe, welche Packages genau noch fehlen, und auch anstelle des kleinen roten Kreuzes, das auf dem Ockergelb kaum zu sehen ist, das ganze Symbol in Rot zu halten oder gleich ein großes rotes Andreaskreuz?).
Es fehlte das Package PowerPDF (das hatte schon bei der früheren Version gefehlt). Ich kopierte mir das von der CodeTyphon-Version (pl_PowerPDF). Dann konnte ich mit dem Neukompilieren beginnen.

Da gab es aber noch ein paar Probleme. Alle im Zusammenhang mit dem Umwandeln von einem Set of const in ein anderes bzw in einen Integerwert.

Package LCLBase1.5, unit grids:

Code: Alles auswählen

 procedure CfgSetFontValue(cfg: TXMLConfig; AKey: WideString; AFont: TFont);
begin
  cfg.SetValue(AKey + '/name/value', AFont.Name);
  cfg.SetValue(AKey + '/size/value', AFont.Size);
  cfg.SetValue(AKey + '/color/value', ColorToString(AFont.Color));
  cfg.SetValue(AKey + '/style/value', Integer(AFont.Style));
end;
 
procedure CfgGetFontValue(cfg: TXMLConfig; AKey: WideString; AFont: TFont);
begin
  AFont.Name := cfg.GetValue(AKey + '/name/value', 'default');
  AFont.Size := cfg.GetValue(AKey + '/size/value', 0);
  AFont.Color:= StringToColor(cfg.GetValue(AKey + '/color/value', 'clWindowText'));
  AFont.Style:= TFontStyles(cfg.GetValue(AKey + '/style/value', 0));
end;
 

Der Compiler monierte jeweils zur 4. Zeile, daß er keine Möglichkeit der Konversion zwischen TFontStyles und Integer gäbe.
Ich habe mir dann geholfen mit einer integer Hilfsvariablen n, im zweiten Fall noch einer Variablen fs:TFontStyles:

Code: Alles auswählen

 procedure CfgSetFontValue(cfg: TXMLConfig; AKey: WideString; AFont: TFont);
    var n:integer;
begin
  cfg.SetValue(AKey + '/name/value', AFont.Name);
  cfg.SetValue(AKey + '/size/value', AFont.Size);
  cfg.SetValue(AKey + '/color/value', ColorToString(AFont.Color));
//  cfg.SetValue(AKey + '/style/value', Integer(AFont.Style));
  move(AFont.Style, n, sizeof(integer));
  cfg.SetValue(AKey + '/style/value', n);
end;
 
procedure CfgGetFontValue(cfg: TXMLConfig; AKey: WideString; AFont: TFont);
     var n:integer; fs:TFontStyles;
begin
  AFont.Name := cfg.GetValue(AKey + '/name/value', 'default');
  AFont.Size := cfg.GetValue(AKey + '/size/value', 0);
  AFont.Color:= StringToColor(cfg.GetValue(AKey + '/color/value', 'clWindowText'));
//  AFont.Style:= TFontStyles(cfg.GetValue(AKey + '/style/value', 0));
  n:= cfg.GetValue(AKey + '/style/value', 0);
  move(n, fs, sizeof(integer));  AFont.Style:=fs;
end;
 


Dasselbe Problem in Datei win32callback.inc

Code: Alles auswählen

 procedure TWindowProcHelper.UpdateDrawListItem(aMsg: UInt);
begin
  ……
    with DrawListItemStruct do
    begin
      ….
      ItemState := TOwnerDrawState(PDrawItemStruct(LParam)^.itemState);
     …
    end;
end;
 


TOwnerDrawState ist definiert als set of TownerDrawStateType mit 14 Konstanten, die also in ein UINT passen.
So ließe sich das umformen in:

Code: Alles auswählen

 
      move (PDrawItemStruct(LParam)^.itemState, n, sizeof(UINT));
      move(n, ItemState, sizeof(UINT));
 

Wäre das nicht einfacher mit: itemstate:= PDrawItemStruct(LParam)^.itemState; ?


In der unit lr_e_pdf: (Package PowerPfd?)

Code: Alles auswählen

  SquaredCorners := TPdfCorners(Data.Corners);
 


SquaredCorners ist definiert als TpdfCorners = set of (pcTopLeft,…), und Corners = set of(ctToplLeft,…), jeweils 4 Konstanten.
Habe Variablen eingefügt:
const n = sizeof (TCornerSet); var p: array[0..n-1] of byte; pc:TPdfCorners;
und dann umformen in

Code: Alles auswählen

         move(Data.Corners, pc, n);  SquaredCorners := pc;  

Vielleicht ginge es auch mit zwei Zeigervariablen p,q:

Code: Alles auswählen

 P:=@Data.Corners; q:=@SquaredCorners; move(p^,q^, sizeof(Data.Corners))



Jetzt gelang es mir endlich, die Packages zu installieren, aber als dann die IDE erstellt werden sollte, brach die Kompilation ab:

Code: Alles auswählen

Exit Code 1, Fehler 1 / Error: Illegal parameter  –w.

Wo sollte dieser „illegal parameter –w“ denn gebraucht werden?
Bei den Angaben im Kompilationsfester („Lazarus kompilieren“ einstellen heißt es bei den Einstellungen: -gw -gl -godwarfsets -gh -gt -Co -Cr -Ci –Sa. Aber auch wenn ich da das –gw weglasse, bekomme ich denselben Fehler.

Wie kann ich nun dieses Problem lösen? Oder ist das ein Bug in dem neuen Lazarus?

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus zweite unabhängige Instanz?

Beitrag von theo »

br_klaus hat geschrieben:Habe es jetzt versucht, mit startlazarus –pcp=C:\LazConfig\1.5-3.1.1, aber da tat sich zuerst einmal gar nichts neues,


Habe jetzt nur den ersten Satz gelesen, aber manchmal steckt der Teufel im Detail.
Hast du das genau so versucht?
Da fehlt nämlich ein "-".
Es müsste

Code: Alles auswählen

startlazarus –-pcp= 

heissen.

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: Lazarus zweite unabhängige Instanz?

Beitrag von br_klaus »

theo hat geschrieben:
br_klaus hat geschrieben:Habe es jetzt versucht, mit startlazarus –pcp=C:\LazConfig\1.5-3.1.1, aber da tat sich zuerst einmal gar nichts neues,


Habe jetzt nur den ersten Satz gelesen, aber manchmal steckt der Teufel im Detail.
Hast du das genau so versucht?
Da fehlt nämlich ein "-".
Es müsste

Code: Alles auswählen

startlazarus –-pcp= 

heissen.


Herzlichen Dank.
Habe es noch einmal probiert, mit einem neuen pcp-Verzeichnis und mit --pcp=.
Verzeichnis wurde erstellt. Mußte aber erst noch das Verzeichnis für gdb.exe eingeben, alles andere war schon richtig.
Und das Sitzungsverzeichnis war auch wieder Users\<Name>\appdata\local\temp\lazarus, mußte ich erst von Hand ändern.
Kompilierung klappte auch, und begann gleich ein neues Projekt.

Aber dann, beim Installieren eines neuen Packages und der damit verbundenen Neukompilierung erhielt ich wieder eine Error-Meldung, dieses Mal mit wenigstens ein paar mehr Angaben:

Code: Alles auswählen

 
Kompiliere Package DebuggerIntf 0.1: Erfolg
Kompiliere Package SynEdit 1.0: Erfolg, Warnungen: 3, Hinweise: 4
syntextdrawer.pp(961,31) Warning: Symbol "CanUTF8" is deprecated
syneditfoldedview.pp(352,24) Hint: Value parameter "aFoldProvider" is assigned but never used
syngutterlineoverview.pp(545,38) Hint: Converting the operands to "Int64" before doing the subtract could prevent overflow errors.
lazsynimm.pas(229,31) Warning: Symbol "Handle" is deprecated
lazsynimm.pas(646,24) Hint: Mixing signed expressions and longwords gives a 64bit result
lazsynimm.pas(652,28) Hint: Mixing signed expressions and longwords gives a 64bit result
lazsynimm.pas(682,19) Warning: Comparison might be always true due to range of constant and expression
Kompiliere Package LazDebuggerGdbmi 0.1: Erfolg
Kompiliere Package SynEditDsgn 1.0: Erfolg
IDE erstellen: Exit code 2, Fehler: 4
Panic: C:\LAZ 1.5\Lazarus\fpc\3.1.1\bin\i386-win32\make.exe: Entering directory `C:/LAZ 1.5/Lazarus'
Panic: C:\LAZ 1.5\Lazarus\fpc\3.1.1\bin\i386-win32\make.exe: Leaving directory `C:/LAZ 1.5/Lazarus'
Panic: makefile:29: *** You need the GNU utils package to use this Makefile.  Stop.
Panic: tool stopped with exit code 2. Use context menu to get more information.
 


Anscheinend liegt es am fpmake oder so ähnlich. Das sind auch die einzigen Dateien mit einem Parameter -w (wie bei der vorigen Kompilation als illegal parameter angegeben).
Weißt du da eine Lösung?

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus zweite unabhängige Instanz?

Beitrag von theo »

Keine Ahnung.
Gibt es denn C:\LAZ 1.5\Lazarus\fpc\3.1.1\bin\i386-win32\make.exe ?

Hat vltl. nichts damit zu tun, aber mir persönlich wird fast schlecht, wenn ich Pfadnamen mit Leerzeichen oder sonstigem Krimskrams sehe (C:\LAZ 1.5\).
Muss man den Teufel denn immer herausfordern? :wink:

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Lazarus zweite unabhängige Instanz?

Beitrag von wp_xyz »

br_klaus hat geschrieben:*** You need the GNU utils package to use this Makefile.

Hast du Delphi? Wenn ja, dann zeigt die PATH Anweisung zum Make-Utility von Delphi.

Antworten