Dann ist deine Signatur aber sehr selbstironischMathias hat geschrieben:Diese Problem habe ich auch, bei roten und grünen Linien muss ich zum Teil 2x gucken.Rot-Grün Sehschwäche)

Dann ist deine Signatur aber sehr selbstironischMathias hat geschrieben:Diese Problem habe ich auch, bei roten und grünen Linien muss ich zum Teil 2x gucken.Rot-Grün Sehschwäche)
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Wen die Augen müde sind, ist der Effekt extremem. Oder auf Papier, wen das Licht schwach ist.Dann ist deine Signatur aber sehr selbstironisch
Code: Alles auswählen
{ TCustomSchaltsymbol }
TCustomSchaltsymbol = class(TImage)
private
FImgPath: String;
FSearchPath: String;
FFileExt: String;
procedure SetImgPath(s: String);
public
DockingPoints: array[0..15] of TPoint;
ACanvas: TCanvas;
constructor Create(AOwner: TComponent; SearchPath, FileExt: String);
destructor Destroy; override;
property ImgPath: String read FImgPath write SetImgPath;
end;
{ TSchaltsymbol }
TSchaltsymbol = class(TCustomSchaltsymbol)
published
property ImgPath;
end;
Code: Alles auswählen
{ TLine }
TLine = record
FromObj, ToObj: TSchaltsymbol;
FromPin, ToPin: Integer;
end;
{ TLines }
TLines = array of TLine;
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Code: Alles auswählen
[Diode0]
type=image
content=Dioden/Diode N
X=176
Y=16
[Diode1]
type=image
content=Dioden/Diode N
X=232
Y=104
[Leitung]
type=wire
fromobj=Diode0
frompin=1
toobj=Diode1
topin=0
Code: Alles auswählen
[0]
x=15
y=0
[1]
x=15
y=31
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Code: Alles auswählen
DockingPoints: array of TPoint;
// Array um ein Element vergrößern
SetLength(DockingPoints, length(DockingPoints) + 1);
// Durch die Elemente iterieren
for i:=0 to length(DockingPoints)-1 do
MacheWas(DockingPoints[i]);
So ist es auch angedacht. Ich hab grade nur während der Testphase die Anzahl auf 16 begrenzt, damit ich mich in dem Moment nicht um die Größe kümmern muss. Wenn die Version rauskommt, wird es ein dynamisches Array seinThandor hat geschrieben:Verstehe ich das Richtig? Du hast pro Bauelement nur 16 Anschlussmöglichkeiten? Was machst du wenn du ein IC mit 32 Beinen hast oder einen yControler darstellen möchtest? Oder noch schlimmer eine reguläre CPU, die durch aus an die 100 Pins haben kann?
Ich würde das Dynamisch implementieren:
Code: Alles auswählen
DockingPoints: array of TPoint; // Array um ein Element vergrößern SetLength(DockingPoints, length(DockingPoints) + 1); // Durch die Elemente iterieren for i:=0 to length(DockingPoints)-1 do MacheWas(DockingPoints[i]);
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Code: Alles auswählen
v0.0.2.0 27.07.2017
- Bugfixes
- Anwendung beendet sich nicht mehr, wenn man in ungespeichertem Zustand schließt, auf "Ja" klickt und im Speicherdialog auf "Abbrechen" klickt
- Zeilenumbrüche im Hilfedialog unter "Hilfe" -> "Bedienung" an das System angepasst (LineEnding statt #13#10)
- Schaltsymbole sind nun Objekte der Klasse "TSchaltsymbol" (geerbt von "TCustomSchaltsymbol" (geerbt von "TImage")) statt TImage
- Fehlermeldungen werden nun über eine Fehlerausgabe-Routine ausgegeben und sind nummeriert
- Leitungen sind nun Linien und keine Schaltsymbole mehr
- Application.Title zeigt nun auch den aktuellen Dateinamen an
- Die drei zuletzt verwendeten Schaltplandateien werden jetzt im Menü angezeigt
- Dankessatz an "lazarusforum.de" im About-Dialog eingebaut
- Thumbnail von "Leitung Horizontal" und "Leitung Vertikal" auf ein rotes Verbotszeichen geändert, da man diese Schaltsymbole zukünftig nicht mehr verwenden soll
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Code: Alles auswählen
Projekt kompilieren, Modus: Release, Ziel: /home/tux/Schreibtisch/Schaltplan/source/bin/LazPlan: Exit code 256, Fehler: 1
errors.pas(8,20) Fatal: Circular unit reference between errors and sysutils
Code: Alles auswählen
li := LV_Objects.Items.Add;
li.Caption := ExtractFileNameOnly(sl[i]);
li.ImageIndex := i;
li := nil;
Scheint ein Problem unter Linux zu sein. Ich hab "uses sysutils" in "error.pas" in den implementation-Teil gerückt. Jetzt sollte es funktionieren.Mathias hat geschrieben:Die aktuelle Version lässt sich nicht mehr kompilieren.
Ist dies nur bei mir so ?Code: Alles auswählen
Projekt kompilieren, Modus: Release, Ziel: /home/tux/Schreibtisch/Schaltplan/source/bin/LazPlan: Exit code 256, Fehler: 1 errors.pas(8,20) Fatal: Circular unit reference between errors and sysutils
Also bei mir unter Win10 und Win7 geht alles, scheint evtl. an Wine zu liegen.Mathias hat geschrieben:PS: Unter Wine geht es.
PSS: Auch die Windows Version hat einen Fehler.
Am Anfang kommt die Diode, dies die wäre noch gut. Wähle ich anliessend nochmals Diode, dann verdoppelt sich die Grösse der TListView.
Die obere Hälfte ist dabei total leer und bei der untern Hälfte kommt nur noch die Beschriftung.
Ich denke der Fehler liegt irgendwo dort:Code: Alles auswählen
li := LV_Objects.Items.Add; li.Caption := ExtractFileNameOnly(sl[i]); li.ImageIndex := i; li := nil;
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Das ist wirklich extrem merkwürdigsiro hat geschrieben:Ein sehr merkwürdiges Phänomen:
Wenn ich die Zip Datei entpacke und die .exe starte erscheinen meine Symbole auch ALLE richtig.
Wenn ich das Projekt selbst compiliere, was problemlos läuft, und dann die .exe starte, egal ob aus der IDE oder direkt aus dem Windows Explorer,
dann gehen die Symbole nicht mehr. Also passiert das erst durch die Neucompilierung warum auch immer....
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Ich habe die Ursache gefunden, eine Unit "errors" gibt es im Basis-Paket von Lazarus schon.compmgmt hat geschrieben:Scheint ein Problem unter Linux zu sein. Ich hab "uses sysutils" in "error.pas" in den implementation-Teil gerückt. Jetzt sollte es funktionieren.Mathias hat geschrieben:Die aktuelle Version lässt sich nicht mehr kompilieren.
Ist dies nur bei mir so ?Code: Alles auswählen
Projekt kompilieren, Modus: Release, Ziel: /home/tux/Schreibtisch/Schaltplan/source/bin/LazPlan: Exit code 256, Fehler: 1 errors.pas(8,20) Fatal: Circular unit reference between errors and sysutils
Code: Alles auswählen
uses
{$IFDEF LINUX}linux,{$ENDIF}
{$IFDEF FreeBSD}freebsd,{$ENDIF}
Unix,errors,sysconst,Unixtype;
Es funktioniert wohl, aber ich denke das doch etwas kleines unsauber ist. Ausser Wine hat einen Bug.Also bei mir unter Win10 und Win7 geht alles, scheint evtl. an Wine zu liegen.
So was hab ich heute Mittag auch schon vermutet gehabt. Ich wusste nicht, dass es die schon gibt, weil es unter Windows keine Probleme gab. Ist jetzt geändert (Version 0.0.2.2).Mathias hat geschrieben:Ich habe die Ursache gefunden, eine Unit "errors" gibt es im Basis-Paket von Lazarus schon.compmgmt hat geschrieben:Scheint ein Problem unter Linux zu sein. Ich hab "uses sysutils" in "error.pas" in den implementation-Teil gerückt. Jetzt sollte es funktionieren.Mathias hat geschrieben:Die aktuelle Version lässt sich nicht mehr kompilieren.
Ist dies nur bei mir so ?Code: Alles auswählen
Projekt kompilieren, Modus: Release, Ziel: /home/tux/Schreibtisch/Schaltplan/source/bin/LazPlan: Exit code 256, Fehler: 1 errors.pas(8,20) Fatal: Circular unit reference between errors and sysutils
Ein Ausschnitt aus der Unit "sysutils"Am besten gibst du deiner Unit einen anderen Namen und das Problem ist weg. Der Vorschlag von dir würde auch Funktionieren, aber dies könnte zu Problemen führen.Code: Alles auswählen
uses {$IFDEF LINUX}linux,{$ENDIF} {$IFDEF FreeBSD}freebsd,{$ENDIF} Unix,errors,sysconst,Unixtype;
Ich hab es jetzt unter Win XP, 7 und 10 getestet und alles hat perfekt funktioniert. Was genau ist denn der Fehler? Kommen irgendwelche Fehlermeldungen? Kannst du evtl ein paar Screenshots senden? Mein Problem ist eben, dass ich den Fehler nicht reproduzieren kannMathias hat geschrieben:Es funktioniert wohl, aber ich denke das doch etwas kleines unsauber ist. Ausser Wine hat einen Bug.Also bei mir unter Win10 und Win7 geht alles, scheint evtl. an Wine zu liegen.
PS: Ich habe es noch mit WinXP und Win10 in der VB getestet, auch dort gibt es bei mir Probleme.
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Unter Windows gibt es diese Unit nicht.So was hab ich heute Mittag auch schon vermutet gehabt. Ich wusste nicht, dass es die schon gibt, weil es unter Windows keine Probleme gab.
Bei starten kommt es richtig wie im zweiten Bild.Was genau ist denn der Fehler? Kommen irgendwelche Fehlermeldungen? Kannst du evtl ein paar Screenshots senden? Mein Problem ist eben, dass ich den Fehler nicht reproduzieren kann