statische Variable
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: statische Variable
Mit allen diesen nicht wirklich notwendigen Zusätzen wird Free Pascal in ein aufgeblähtes Monster verwandelt welches kaum jemand noch wirklich 100%-ig beherrscht wie bei C++. Ich würde sie nicht verwenden...
-
- Beiträge: 188
- Registriert: Fr 18. Jan 2013, 09:29
- OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
- CPU-Target: Celeron
Re: statische Variable
Danke für die umfangreichen Antworten.
Stil hin oder her. Ich bin kein Freund von sturen Dogmen. Wenn es mir Vorteile bringt, benutze ich das.
Ich verwende auch manchmal (schlagt mich nicht !) den goto Befehl.
Ich programmiere auch viel in Assember, un da braucht man entsprechendes oft, und das ist mir auch vertraut.
Die Eigenschaft globale Variable mit nur lokalem Zugiff kann schon Vorteile bringen.
Also Danke nochmal, ich kann das schon brauchen,
Gruß Fritz
Stil hin oder her. Ich bin kein Freund von sturen Dogmen. Wenn es mir Vorteile bringt, benutze ich das.
Ich verwende auch manchmal (schlagt mich nicht !) den goto Befehl.
Ich programmiere auch viel in Assember, un da braucht man entsprechendes oft, und das ist mir auch vertraut.
Die Eigenschaft globale Variable mit nur lokalem Zugiff kann schon Vorteile bringen.
Also Danke nochmal, ich kann das schon brauchen,
Gruß Fritz
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: statische Variable
Ich auch. "goto" hat viele sinnvolle Anwendungen. Ich verwende auch häufig "with", hier würde ich mir aber eine "sichere" erweiterte Version wünschen.haderlump hat geschrieben:Danke für die umfangreichen Antworten.
Stil hin oder her. Ich bin kein Freund von sturen Dogmen. Wenn es mir Vorteile bringt, benutze ich das.
Ich verwende auch manchmal (schlagt mich nicht !) den goto Befehl.
Für die Speicherung eines Zustandes der in einer oder verschiedenen Prozeduren oder oder Klassen benötigt wird bietet sich auch die Verwendung einer globalen Record-Variablen an.
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: statische Variable
Dann würdest du hier lieber die Deklaration von "b" verwenden ?mse hat geschrieben:Mit allen diesen nicht wirklich notwendigen Zusätzen wird Free Pascal in ein aufgeblähtes Monster verwandelt welches kaum jemand noch wirklich 100%-ig beherrscht wie bei C++. Ich würde sie nicht verwenden...
Code: Alles auswählen
type
MyClass=class
var
a:TBitmap; static;
const
b: TBitmap = nil;
end;
Code: Alles auswählen
// FileUtil
function FileIsReadable(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit';
// controlconst.inc
const
...
CM_GOTFOCUS = CM_BASE + 2 unimplemented;
// Forms
property DesignTimeDPI: Integer read FDesignTimePPI write SetDesignTimePPI stored False; deprecated {$IFNDEF FPDOC}'Use DesignTimePPI instead. DesignTimeDPI will be removed in 1.8'{$ENDIF};
mathh.inc
function Sin(d : ValReal) : ValReal;[internproc:fpc_in_sin_real];
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: statische Variable
Ich würde in einer "class" Typendefinition weder "type" noch "var" noch "const" verwenden. "class" soll schlank bleiben.Mathias hat geschrieben: Dann würdest du hier lieber die Deklaration von "b" verwenden ?
Nur lokal benötigte Definitionen kann man auch im "implementation" Teil definieren, nur für einzelne Prozeduren und Methoden benötigte globale Variablen direkt vor der Prozedur-Implementation oder in schon erwähnten Status-Records.
Auch komplizierte {$include} Konstrukte sollte man meiden. Ich verstehe, dass in der Free Pascal RTL manchmal nichts anderes übrig bleibt, als {$include} zu verwenden.
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: statische Variable
Stimmt, dies kann man alternativ machen, aber ich habe es lieber in der Classe zu dem es gehört.Nur lokal benötigte Definitionen kann man auch im "implementation" Teil definieren,
Das ist eines der Vorteile von Java, da ist man gezwungen, dies sauber zu machen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: statische Variable
+1. Leider sind wir schon auf dem besten Weg da hin.mse hat geschrieben:Mit allen diesen nicht wirklich notwendigen Zusätzen wird Free Pascal in ein aufgeblähtes Monster verwandelt welches kaum jemand noch wirklich 100%-ig beherrscht wie bei C++.
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: statische Variable
Dies ist wohl Geschmackssache, es gibt viele Neuerungen, welche einem das Coden einfacher machen.
ZB. das hie mit den Array Operatoren http://www.lazarusforum.de/viewtopic.ph ... ay#p103736
Ein Features, welches ich vermisse, wäre ein Includes-String.
So etwas auf dieser Art:
Für die OpenGL-Programmierung wäre dies eine grosse Erleichterung.
Jetzt muss man dies mühsam und schlecht leserlich so machen:
Gut, man könnte Resourcen nehmen, aber dies ist auch so ein geflicke.
ZB. das hie mit den Array Operatoren http://www.lazarusforum.de/viewtopic.ph ... ay#p103736
Ein Features, welches ich vermisse, wäre ein Includes-String.
So etwas auf dieser Art:
Code: Alles auswählen
const
ShaderCode : String = {$Include fragment.glsl}
Jetzt muss man dies mühsam und schlecht leserlich so machen:
Code: Alles auswählen
const
Vert_Shader =
'#version 330' + LineEnding +
'layout (location = 0) in vec3 inPos;' + LineEnding +
'layout (location = 1) in vec3 inNormal;' + LineEnding +
....
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2816
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: statische Variable
Pack einfach die ganze Stringdefinition in ein Include.Mathias hat geschrieben:Ein Features, welches ich vermisse, wäre ein Includes-String.
So etwas auf dieser Art:Code: Alles auswählen
const ShaderCode : String = {$Include fragment.glsl}
Genau dafür sind die Ressourcen ja da.Mathias hat geschrieben:Gut, man könnte Resourcen nehmen, aber dies ist auch so ein geflicke.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: statische Variable
Aber dort hat man immer noch die ' +, und das LineEnding.Pack einfach die ganze Stringdefinition in ein Include.
Der Shadercode sollte übersichtlich editierbar sein.
Was macht man, wen die ganzen OpenGL Units in einer Package sind, oder gehen die Resourcen unterdessen auch in Packages ?Genau dafür sind die Ressourcen ja da.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: statische Variable
Ahnliches gibt es schon:Mathias hat geschrieben:So etwas auf dieser Art:Code: Alles auswählen
const ShaderCode : String = {$Include fragment.glsl}
Code: Alles auswählen
uses
FileUtil;
var
ShaderCode: String;
begin
ShaderCode := ReadFileToString('fragment.glsl');
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: statische Variable
Das ist nicht das Problem, ich will die GLSL-Source direkt in der EXE haben. Und 2. wäre dann fragment.glsl im Ordner der Package.Aber das ist wohl nix, weil das ein Dutzend Tastaturanschläge mehr benötigt.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: statische Variable
MSEide hat dafür RechtsKlick-'Modify Selection'-'Convert to Pascal string'. Das konvertiert den markierten normalen Text in die Pascal String-Konstanten Form.Mathias hat geschrieben: Jetzt muss man dies mühsam und schlecht leserlich so machen:Code: Alles auswählen
const Vert_Shader = '#version 330' + LineEnding + 'layout (location = 0) in vec3 inPos;' + LineEnding + 'layout (location = 1) in vec3 inNormal;' + LineEnding + ....
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: statische Variable
Und dies muss man dann bei jede Änderung des GLSL code machen?
Die sauberste Lösung wäre ein Includestring, den es leider nicht gibt.
Die sauberste Lösung wäre ein Includestring, den es leider nicht gibt.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: statische Variable
Kleine Änderungen macht man direkt im Pascal Format.
Persönlich würde ich den Shader Code in separaten Dateien halten die dann auch mit dem richtigen Highlighter angezeigt werden und mit einem make Script, das in 'Project'-'Options'-'Make'-'Command before' aufgerufen wird, in include- oder resource-Dateien wandeln.
Persönlich würde ich den Shader Code in separaten Dateien halten die dann auch mit dem richtigen Highlighter angezeigt werden und mit einem make Script, das in 'Project'-'Options'-'Make'-'Command before' aufgerufen wird, in include- oder resource-Dateien wandeln.