Deutsch
Forum

XProfans interne Icons

 
- Seite 1 -



H.Brill
Hallo,
Ab XProfan X2 wurden ja manche der internen, eingebauten Icons (21 Stück) geändert. Da gefielen mir die Icons von Profan-Version 11.2a eigentlich besser.
Der Drucker sieht z.b. besser aus, der Sand ist gelber, das Gesicht ist anders
u.v.m
Nun möchte ich nicht jedes einzelne Icon rauspicken. Die gibt es ja in der
Icon Group und als RT_Icon. Mit dem ResHacker gelingt es mir nicht, diese
Gruppen als Gesamtes zu extrahieren und zu speichern.

XProfan in der Version X4 bietet ja einige Ressourcen-Funktionen an. Wäre es
damit möglich, die Icons von der Version X4 gegen die Icons der Version 11.2a
in einem Rutsch zu tauschen ? Oder zweimal : einmal mit ResType 3 und
dann mit ResType 14 ?
Declare String INamen, update
Declare Long restype, result
update = "C:\Sprachen\XProfanX4\Change\Leer32.dll"
restype = 3' Icon-Group = 14
Window 600, 400
Inamen = "A,MUELL,BAUM,MUENZE,COMPUTER,PROFAN,DOS,SAND,DRUCKER,STEIN,EDITOR,TEXT,EIMER,WASSER,EIS,WEG,FILEICON,WINDOWS,GESICHT,KNOPF1,KNOPF2"

WhileLoop 1, 21

    result = Res("Load", update, restype, SubStr$(INamen, &LOOP, ","), "C:\Sprachen\XProfan11\Profan.exe")
    Print "Ergebnis : ", &LOOP, ":", If(result = 1, "OK !", "Fail !")

EndWhile

Print "Fertig..."
WaitEnd

So geht es mal jedenfalls nicht. Die Gruppen sind zwar vorhanden, aber die Icons werden nicht im ResHacker angezeigt. Hat da jemand eine Idee, das zu verwirklichen ?
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
23.03.2026  
 



 
- Seite 2 -



Georg
Teles
Nabend,

glaube, ich seh den Baum vor lauter Wälder nicht mehr... irgendwie funzt res("Change"... bei mir gar nicht mehr, der ursprüngliche Code geht, aber nicht in meinem Programm "gemerged" und angepasst... zumindest will ich die Ressourcen zunächst löschen und dann einfügen, weil viele Gründe: mehr IDs bei Ziel als Quelle; Indezierung der Icon Gruppen durch die IDs;... es sei denn, bei leerer Datei kann man die einfach hinzufügen, alles easy...

Habe auch mit BeginUpdateResource, UpdateResource & EndUpdateResource rumhantiert... Werte sagen TRUE / =1, aber es passiert nix... als Admin gestartet... ChDir etc. hilft nicht

Falls wer Beispielcode für die Ressourcen-Löschung hat, bitte posten

Herunterladen

Grüße
Georg

657 kB
Hochgeladen: vor 26 Tagen
Ladeanzahl5
Herunterladen
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

vor 26 Tagen  
 




H.Brill
Hallo,
habe mal das test2.zip runtergeladen und entpackt. Programm gestartet, links
neue Icons.dll ausgewählt, die Icon eingelesen und einzelne Icons angehakt.. Soweit, so gut. Rechts habe ich dann die Standard.dll oder auch mal einfach die Leer32.dll ausgewählt. Auch hier habe ich die Icons eingelesen. Auswählen
kann man da rechts nichts, außer der Checkbox für die Backupdatei. Auch der
Ausführen-Button bleibt ausgegraut und ist damit nicht nutzbar.

Was das Programm jetzt macht und ob es überhaupt was macht, bleibt mir
ohne Quellcode leider verborgen. Somit kann ich im Moment nicht helfen.

Da muß ich mir wohl ein eigenes Programm erstellen, um das Res("Change",...)
dahingehend auszuprobieren.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
vor 26 Tagen  
 




H.Brill
Also bei mir scheint es zu funktionieren. Habe danach mal mit dem ResHacker
nachgeschaut.
Declare String Namen[], dname, orig
Declare Long restype, result
Declare Handle hExe, resinfo[], choice, btn1
Declare Pointer aktRes
orig = "F:\XProfanX4\ResTest\Leer32.dll"' Pfad anpassen !!!!
hExe = UseDLL(orig)
restype = 14' Icon-Group = 14
Window 600, 400
choice = Create("ChoiceBox", &HWnd, 0, 10, 10, 150, 150)
btn1   = Create("Button", &HWnd, "Delete", 200, 10, 80, 25)
ClearList
AddRes hExe, 14

WhileLoop 0, GetCount(0) - 1

    AddString(choice, SubStr$(GetString$(0, &LOOP), 2, "|"))
    Namen[&LOOP] = SubStr$(GetString$(0, &LOOP), 2, "|")

EndWhile

WhileLoop SizeOf(Namen[]) - 1

    resinfo[&LOOP] = Res("Info", hExe, restype, Namen[&LOOP - 1], 0)

EndWhile

FreeDLL hExe

While 1

    WaitInput

    If Clicked(btn1)

        dname = GetText$(choice, GetCurSel(choice))

        If dname <> ""

            result = Res("Change", orig, restype, dname, 0, 0, resinfo[GetCurSel(choice)])
            MessageBox(Str$(result), "GELÖSCHT !!!", 0)

        EndIf

    EndIf

EndWhile


Ist jetzt nur ganz rudimentär. Aber auch damit wenig Code.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
vor 26 Tagen  
 




Georg
Teles
Hi,

ja ich hab den Button und die Funktionen deaktiviert, weil sie nicht funktionieren.

Dein Code geht bei mir nur bedingt; er findet von allen Icon Groups nur PROFAN und löscht danach alles außer PROFAN und fügt noch String Tabellen (s. Screenshot). Komischerweise ist das PROFAN Icon nicht das originale (nur das Icon 1, die Gruppe wurde aber tatsächlich gelöscht), was vorher drin war, obwohl die DLL explizit angegeben wird ???

Hab mal die "neue icons.dll" genommen, wo alle drin sind.

Vorher:





Nachher:



Die habe ich in mein Programm eingebaut, aber bekomme immer eine Fehlermeldung...



Wer weiß, was res("Change... im Hintergrund macht, ich nehme an, sie bedient sich den Funktionen BeginUpdateResource, UpdateResource & EndUpdateResource die ich einfach nicht zum Laufen bringe (zumindest geben sie richtige Werte an, bis auf EndUpdateResource, die gibt 0 oder 1, je nachdem, wenn ich den letzten Parameter genauso wähle....) (hab auch mit den Variablen als "Addr" alle Varianten durchprobiert, kein Erfolgt (BeginUpdateResource will als DLL Namen eine Adresse zum String z.B., UpdateResource will beim Resourcen Namen ebenfalls eine Addr zum Stringnamen... und egal, was ich bei EndUpdateResource mache, die die Ändeurngen schreibt, bekomme ich immer 0 oder 1 je nachdem, was ich hinten angeb: 1= keine Änderungen, 0= Änderungen von Update übernehmen...)
' zdll$ = ziel Dll mit Pfad
hUpdate& = BeginUpdateResource(Addr(zdll$),0)'1 = del all res & add with UPDATE; 0= make Changes by UpdateResource
Print "hUpdate&: ";hUpdate&
type& = 14
' id$ hier = COMPUTER als Group Icon
rr& = UpdateResource(hUpdate&,type&,Addr(id$),Val(lng$),0,0)
'If lpData is NULL and cbData is 0, the specified resource is deleted from the file indicated by hUpdate.
'BOOL UpdateResourceA(
'  [in]           HANDLE hUpdate,
'  [in]           LPCSTR lpType,
'  [in]           LPCSTR lpName,
'  [in]           WORD   wLanguage,
'  [in, optional] LPVOID lpData,
'  [in]           DWORD  cb
');
Print "Update: ";rr&
Print "END: ";EndUpdateResource(hUpdate&,0)' 0= make changes by UpdateResource; 1= no Changes made

Als Lösung müsste ich den Res("Change... Befehl als WorkAround implementieren, muss aber wissen, wie dieser genau funktioniert ...

Mit Ersetzten hab ich garnicht weiter gemacht, das scheint selbsterklärend zu sein mit ResInfo, Size, Pointern, das haben wir ja schon durch, sowohl mit Icons als auch mit Groups - allerdings ohne die Mehrfachen Icons in einer Gruppe zu berücksichtigen (das müsste man ergänzen...)

Grüße
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

vor 25 Tagen  
 




H.Brill

Wer weiß, was res("Change... im Hintergrund macht, ich nehme an, sie bedient sich den Funktionen BeginUpdateResource, UpdateResource & EndUpdateResource


Klar, RGH kocht wie jeder andere Programmierer auch nur mit Wasser. Der malt
auch keine Buttons usw. sondern bedient sich an dem, was ja eh schon da ist
und von der API bereit gestellt wird. Warum auch das Rad neu erfinden ?

Was hast du denn noch für Icon Groups drin ?
Ich dachte immer, es kann von den 1-24 bekannten Ressourcen immer nur eine
der gleichen Art geben. Und die eigentlichen Ressourcen kommen dann eben in diese Gruppen. Also so ein Prinzip, wie ein Ordner.

Hast du auch schon probiert, die Dateinamen als Bereich# zu übergeben ?
Das war ja früher bei Profan auch so ein Knackpunkt, wo Addr() bei bestimmten
APIs nicht ging und man über einen Bereich# das übergeben mußte.

Da aber die gleichen Funktionen (KERNEL32.DLL) von RGH und auch von dir
direkt genutzt werden, werden wir da nicht weiterkommen. Vielleicht haben wir
beide (und vlt. auch RGH) auch ein Verständnisproblem und nutzen die Funktionen wahrscheinlich falsch.
PS:
Ich sehe gerade oben in deinem Code


'BOOL UpdateResourceA(
' [in] HANDLE hUpdate,
' [in] LPCSTR lpType,
' [in] LPCSTR lpName,
' [in] WORD wLanguage,
' [in, optional] LPVOID lpData,
' [in] DWORD cb


daß ein Handle als erster Parameter gefordert ist. Eine Addr(dateiname) ist
aber kein Handle, sondern nur die Adresse des Strings, der den Dateinamen
darstellt. Also mußt du hier mit hDLL& = UseDLL("deineDLL") ein Handle
holen. Ich mache es ja oben in meinem Quellcode genauso. Außerdem stimmt
der zweite Parameter (type&) auch nicht. Das muß ein String sein und ein Zeiger darauf (LPCSTR), z.b. Addr(type$)
Da könntest du mal mit Addr("RT_GROUP_ICON") bzw. Bereich# arbeiten.
Vielleicht muß man da auch mit MAKEINTRESSOURCE und der Nr. 14 arbeiten.
Vielleicht kommst du da weiter.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
vor 25 Tagen  
 




Georg
Teles
H.Brill (08.04.2026)
Was hast du denn noch für Icon Groups drin ?


Ja bei den DLLs habe ich zig Icons eingefügt, um die Icons die zu den Gruppen gehören um zu testen, ob ich die richtig auslese und zuordne. Die lese ich mit EnumResourceTypes bzw. EnumResourceNames mittels ProcAddr und füg sie in eine Liste. Danach mittels GRPICONDIRENTRY und GRPICONDIR kann ich aus den Group Icons die einzelne Icons (dessen IDs) herauslesen und die Liste entsprechend abgleichen und befüllen (die sichtbare Grids für Quell DLL und Ziel DLL).

H.Brill (08.04.2026)
'BOOL UpdateResourceA(
' HANDLE hUpdate,
' LPCSTR lpType,
' LPCSTR lpName,
' WORD wLanguage,
' LPVOID lpData,
' DWORD cb
daß ein Handle als erster Parameter gefordert ist. Eine Addr(dateiname) ist
aber kein Handle, sondern nur die Adresse des Strings, der den Dateinamen
darstellt. Also mußt du hier mit hDLL& = UseDLL("deineDLL") ein Handle
holen. Ich mache es ja oben in meinem Quellcode genauso. Außerdem stimmt
der zweite Parameter (type&) auch nicht. Das muß ein String sein und ein Zeiger darauf (LPCSTR), z.b. Addr(type$)
Da könntest du mal mit Addr("RT_GROUP_ICON") bzw. Bereich# arbeiten.
Vielleicht muß man da auch mit MAKEINTRESSOURCE und der Nr. 14 arbeiten.
Vielleicht kommst du da weiter.


Ah ne das hat gepasst, hUpdate ist bei mir ja auch Handle und kein String oder Pointer...
-------------
Ich habe den begrabenen Hund jetzt gefunden das Stichwort war in der Dokumentation drin, wegen den nun zig Procs aber erst einmal schwer zu finden gewesen:

Ich habe bedacht, nach dem Einlesen der DLLs mittels UseDLL diese wieder mit FreeDLL freizugeben. Jetzt sehe ich gerade, dass UseDLL = LoadLibrary bzw. LoadLibraryEx ist und FreeDLL = FreeLibrary aahahaha.

Für die Ressourcen zum Auslesen habe ich LoadLibraryEx benutzt, da ich die DLL nur als "Database" laden muss... parallel habe ich für die AddRes Funktion (nur für Sprache) UseDLL benutzt... schön und gut, habe aber beim Laden der einen und der anderen Funktion auch entsprechend brav entladen...

Für jedes Anklicken der Icons in der Grid lade ich aber jedes Mal die DLL und lese das/die Icon/s heraus (kann auch alle auf einmal laden, ist aber umständlich mit mehreren Icons in einer Gruppe, da müsste ich ein Array bauen und bei jedem laden neuer DLL die alten entladen und indexieren.... es ist so einfacher, da ich beim Anklicken auslese, welche IDs drin sind und diese ntsprechend lade, beim nächsten klick entlade und die Handles neu zuordne...). Das ist notwendig, da ich verschiedene Icons die einer Gruppe gehören aufzählen und auslesen muss da verschiedene Auflösungen... und hier war der Hund begraben, beim Anklichen wurde jedes Mal die DLL mittels LoadLibraryEx geladen, die Icons ausgelesen und angezeigt aber die DLL danach nicht mehr entladen.

Nun funktionieren res("Change und BeginUpdateResource, UpdateResource und EndUpdateResource einwandfrei hehe. Jetzt kann ich das Programm ausbauen.

Grüße
Georg
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

vor 24 Tagen  
 




Georg
Teles
Nachtrag: habe doch UpdateResource benutzt, da man BeginUpdateResource einmalig ausführt und mit UpdateResource auf einen Wisch alles updaten kann, was man möchte und mittels EndUpdateResource die Änderungen vornimmt bzw. die Datei anschließend schreibt (ich lasse die hizuzufügende Groups aus Quelle im Ziel, wenn sie dort bereits vorhanden sind, lösschen, dann im Ziel hinzufügen... dann dazugehörige Icons anhand IDs im Ziel löschen, was drin ist und neue Icons anhand IDs der Quelle hinzufügen... weiß nicht, was passiert, wenn gleiche IDs aufreten, vermutlich werden sie ersetzt hehehhe und es gibt bei Icon Group eine Kollision oder werden wahrscheinlich bei beiden Gruppen gezählt???? Hab jedenfalls die Version EXPERIMENTAL genannt).

Fun Fact: FindResource und UpdateResource erwarten bei RT_GROUP_ICON jeweils Addr zu den Strings (macht Sinn, weil die Gruppen nach Namen benannt sind) wobei diese beiden Funktionen bei Icons nur Nummern erwarten (macht auch sinn, da Nr. = ID des Icons; nicht zu vergleichen mit Nr. in der EXE/DLL die mit 0 beginnen!)

Herunterladen

Jetzt ist es möglich, Icons in eine leere DLL hinzuzufügen... hierbei muss sie ausgewählt und eingelesen werden (s. Button) ... weitere Funktionen kommen nachträglich

Grüße

658 kB
Hochgeladen: vor 24 Tagen
Ladeanzahl3
Herunterladen
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

vor 24 Tagen  
 




H.Brill

Für jedes Anklicken der Icons in der Grid lade ich aber jedes Mal die DLL und lese das/die Icon/s heraus (kann auch alle auf einmal laden, ist aber umständlich mit mehreren Icons in einer Gruppe


Mit Profan-Mitteln kannst du das doch einfacher machen :
Declare Handle icons[]
Declare Long x, y
Window 800, 400
x = 10
y = 10

WhileLoop 0, IconCount("F:\XProfanX4\ResTest\Leer32.dll") - 1

    icons[&LOOP] = Create("hIcon", "F:\XProfanX4\ResTest\Leer32.dll", &LOOP)

EndWhile

x = 10
y = 10

WhileLoop 0, SizeOf(icons[]) - 1

    If &LOOP = 10

        x = 10
        y = 50

    EndIf

    DrawIcon icons[&LOOP], x, y
    Inc x, 50

EndWhile

WaitKey

Damit sind die Handles der Icons ruckzuck in einem Array und kannst sie nach deinem Gusto weiter verwenden. Und du brauchst nicht jedesmal mit UseDLL
rumhantieren.
So, z.b. in einem TreeView :
 $H Windows.ph
Declare Handle tv, ilist
Declare Long x, y
Window 800, 400
ilist = Create("ImageList", 16, 16)
x = 10
y = 10
EnumGroupIcons("F:\XProfanX4\ResTest\Leer32.dll")

WhileLoop 0, IconCount("F:\XProfanX4\ResTest\Leer32.dll") - 1

    ImageList("AddIcon", ilist,  Create("hIcon", "F:\XProfanX4\ResTest\Leer32.dll", &LOOP))

EndWhile

tv = Create("TreeView", %HWnd, ilist, 10, 10, 180, 150)

WhileLoop 0, GetCount(ilist) - 1

    TreeView("InsertItem", tv, 0, &LOOP, GetString$(0, &LOOP))

EndWhile

WaitKey
DeleteObject ilist

Proc EnumGroupIcons

    if %pCount>1

        Parameters hModule&, lpszType&, lpszName&, lParam&
        Var GroupIconName$=String$(lpszName&,0)
        Case GroupIconName$="" : return 0
        Addstring GroupIconName$
        Return 1

    endif

    Parameters fle$
    return ~EnumResourceNames(~LoadLibrary(Addr(fle$)),~RT_GROUP_ICON, ProcAddr("EnumGroupIcons", 4),0)

EndProc

 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
vor 24 Tagen  
 




Georg
Teles
H.Brill (09.04.2026)
Mit Profan-Mitteln kannst du das doch einfacher machen


Naja, das funktioniert nur bedingt, denn die Icons in verschiedenen Auflösungen können unterschiedliche Icons haben: s. habe extra bei "neue icons.dll" das MUELL Icon mit 32x32, zu sehen "1" und 16x16, zu sehen "2", zum Testen ersetzt: in der Übersichtsliste als 16x16 ausgelesen/gezeichnet und beide Icons dann unten rechts korrekt gezeichnet (Icon 17 und 26):



Create("hIcon"... nimmt nur das Icon mit der Auflösung von 32x32 und skaliert in deinem Code auf 16x16 bzw .dann beliebig; man muss also sowieso jedes Icon auslesen und darstellen

Mit ~ImageList_Create(16,16,... kann man das exakte Icon herauspicken, da man die Auflösung kennt; in meinem Fall, da die einzelnen Icons sowieso eingelesen und gezeichnet werden, kann ich anhand des Handles die Auflösung mittels GetIconInfo heruaslesen und 1 zu 1 in der Größe zeichnen. Im Programm habe ich eh mehrere Listen mit alle Daten beim Einlesen der DLL befüllt: welche Icon IDs zu welchen Icon Groups gehören, welche Auflösungen diese haben etc., die könnte ich auch verwenden, muss aber alle Icons mit Handles laden, d.h. das Tool hält quasi alle Icons als Bildchen im Speicher (bei großen Icons bzw. vielen kann der Arbeitsspeicher entsprechend mehr ausgelastet werden) was ich vermeiden möchte.

Grüße

9 kB
Hochgeladen: vor 21 Tagen
Ladeanzahl3
Herunterladen
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

vor 21 Tagen  
 




H.Brill
Ja, RGH hat da, so wie bei manch anderen Funktionen (siehe z.b. JSON), nur sehr rudimentär implementiert. Und vielleicht nur das, was seine Delphi-Units
hergaben. Bei PureBasic z.b. sieht das ganz anders aus. Da liefert der Autor gleich ganze Galerien von dazu gehörenden Funktionen mit. Naja, der Fred
arbeitet ja auch mit einem kleinen Team zusammen.
Ist halt schade, daß RGH nur noch lesend anwesend ist. Da muß man halt
noch fehlende Funktionalität selber implementieren.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
vor 21 Tagen  
 




Georg
Teles
Nunja,

alles abzudecken, Up to date dazu zu sein bedeutet ziemlich viel Arbeit, vor allem wenn man alleiniger Entwickler ist. So wie Roland XProfan designed hat, finde ich es klasse, soll ja auch einsteigerfreundlich sein.

Aber auch für Fortgeschrittene sind Funktionen wie DEF bzw. CALL ganz interessant, so kann man XProfan so ziemlich alles beibringen. Die Windows Funktionen bei msdn sind hierfür relativ gut dokumentiert. Wenn man natürlich hobbymäßig untergegs ist, was die Meisten hier ja sein dürften, braucht man dann etwas Einarbeitungszeit, wenn man XProfan was beibringen möchte.

Hab mit XProfan angefangen und bin dabei geblieben, bin auch kein beruflicher Programmierer, kleine Tools hiermit zu schrieben genügt mir tatsächlich, vor allem, wenn man XProfan was beibringen kann, ist es aus meiner Sicht kleinerer Aufwand als eine Programmiersprache neu zu lernen. Habs mal mit C++ versucht, aber irgendwie bislang keine Zeit gehabt...

Grüße
Georg
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

vor 19 Tagen  
 




H.Brill

Hab mit XProfan angefangen und bin dabei geblieben, bin auch kein beruflicher Programmierer, kleine Tools hiermit zu schrieben genügt mir tatsächlich, vor allem, wenn man XProfan was beibringen kann, ist es aus meiner Sicht kleinerer Aufwand als eine Programmiersprache neu zu lernen.


Genauso ist es bei mir auch. Hatte damals, so in Anfang der 90er Profan im
PC-Magazin als Shareware entdeckt. Es gab ja auch damals nicht viel, außer
halt QuickBasic. Zum Programmieren bin ich eigentlich 1989 bei einer Schulung
zum PC-Programmierer (MS-DOS, GW-BASIC, dBase, Clipper) als Arbeitsamt-Maßnahme (6 Monate Unterricht) gekommen. Da hatte mir ein Klassenkamerad noch eine Vollversion von Turbo - Pascal 4.5 gegeben. Das wars ja auch schon. VB usw. kamen ja erst viel später auf den Markt.

An C, Assembler usw. hatte ich mich auch mal versucht. Das war aber nie so richtig mein Ding. Gerade wegen der Einfachheit von (X)Profan ist es halt ideal,
um solche Haus- und Hofprogramme zu schreiben. Auch für andere, zum Erlernen der Grundlagen (Kontrollstrukturen, Variablen usw.) ist es immer noch
ein sehr geeignetes Mittel, da man halt sehr schnell die Ergebnisse im Fenster
sehen kann. Da erscheint mir PureBasic mit seinen Debug-Ausgaben und den
verschachtelten Event-Auswertungen bei der Benutzeroberflächen - Programmierung für einen Anfänger/in eher gewöhnungsbedürftig.

Nun ja, so wie es momentan aussieht, wird XProfan wohl nicht mehr weiter
entwickelt. Ob jetzt RGH es gesundheitlich nicht mehr kann oder will, sei mal
dahin gestellt. An RGH's Stelle würde ich dann XProfan X4 als Freeware freigeben. Kaufen tut es sowieso noch kaum jemand. Dann wäre es besser,
wenn sich da noch mehrere daran erfreuen könnten. Es bringt ja auch nichts,
daß so ein Lebenswerk, wie X4, bald in Vergessenheit gerät. Und irgendwann mit ins Grab nimmt auch keiner was mit. Andere Autoren, wie B4X z.b. hatten
das schnell erkannt und ihre Entwicklungstools als freien Download angeboten.
Es war ja auch nicht verwunderlich, als er fast zeitnah nach Erscheinen der Version X3 das FreeProfan als Freeware angeboten hatte. Von da an stagnierten seine Verkaufszahlen erheblich. Er hätte damals besser das FreeProfan den Besitzern der Vollversion oder eines Updates zukommen lassen sollen. Ein weiteres tat auch noch der Trend zum Smartphone hin.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
vor 19 Tagen  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

812 Betrachtungen

Unbenanntvor 0 min.
Roland Schäffer vor 15 Tagen
Jürgen Strahl vor 16 Tagen
Georg Teles vor 18 Tagen
H.Brill vor 19 Tagen
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

H.Brill (13x)
Georg Teles (11x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie