Seite 4 von 8

Re: Programmerstellung mit dem formdesigner

Verfasst: 08.06.2013 13:58
von The_Dark_Zim-.-
@derschutzhund
ähm PureBasic braucht keine Runtime und meiner Meinung nach ist es recht schwer auf einen fertige EXE zu kommen, die größer als 1,1MB ist, wenn man reinen Quellcode benutzt. Und schneller ist es dann, vermute ich jetzt mal, immernoch als jeder Interpretersprache?!

Ein Freund von mir Programmiert zur Zeit in Delphi und hat eine wirklich kleine Software zur zinsberechnung geschrieben. Das teil war/ist 2,36MB GROß, meine ist nur 35kB groß mit den selben funktionen ... Mag zwar sein das heutige PC's das ab können, aber wenn jeder nurnoch so einen übergroßen müll Produziert ist das plötzlich nicht mehr so lustig ;)

Und wie gesagt0 wenn man das in zwei Datein aufteilt kann man die GUI ganz normal zusammenstellen und im nachhinein auch jeder zeit wieder ändern.

Ps. als Consolenversion war die software 7,5kb groß :P

Re: Programmerstellung mit dem formdesigner

Verfasst: 08.06.2013 20:34
von derschutzhund
Damit wir über die gleiche Sache sprechen könntest du das Programm vielleicht mal posten?
35KB für eine Exe mit grafischer Oberfläche ist wirklich sehr schön klein.

Re: Programmerstellung mit dem formdesigner

Verfasst: 08.06.2013 20:52
von Kiffi
Anmerkung: PureBasic fügt im Gegensatz zu beispielsweise Lazarus
nur die für den Programmablauf benötigten Bibliotheken der Exe hinzu.

Aus diesem Grund ist eine Hallo-Welt-Exe recht klein.

Solltest Du allerdings beispielsweise SQLite-Funktionalitäten in Deinem
Programm verwenden, wird die Exe auf einen Schlag um 560 KB größer.

Unterm Strich sind PB-Programme allerdings angenehm klein.

Grüße ... Kiffi

Re: Programmerstellung mit dem formdesigner

Verfasst: 08.06.2013 21:02
von WPö
Moin!

Das ist ja das Dilemma in der heutigen Zeit. Die Programmierer sind auch nur Menschen und damit faul. Sie verwenden Programme, Werkzeuge und Module, die auch von faulen Menschen geschrieben wurden.

Dann wird wegen einer einzigen lächerlich kleinen Routine aus einem Modul (auch ohne daß sie auf andere Routinen zugreift) das komplette Modul ins fertige Programm gelinkt - wieder ein MB mehr. Weil sich nun freilich nicht gerne die Leute als faul bezeichnen lassen wollen, gibt's die abenteuerlichsten Ausreden wie "heute braucht es den Speichergeiz nicht mehr" oder "bist Du einer von gestern?" usw..

Als Programmierer vom alten Schlag achte ich z.B. sehr auf Effizienz. Das braucht vielleicht etwas mehr Zeit für die Entwicklung, als irgend etwas halbwegs Funktionierendes hinzuwerfen, ist aber sauber und leicht nachvollziehbar. Damit hat man mehr Freude.

Gruß - WPö

Re: Programmerstellung mit dem formdesigner

Verfasst: 08.06.2013 21:03
von ts-soft
Kiffi hat geschrieben:Anmerkung: PureBasic fügt im Gegensatz zu beispielsweise Lazarus
nur die für den Programmablauf benötigten Bibliotheken der Exe hinzu.
Ergänzend: Nur die für die Nutzung notwendigen (abhängigen) Teile einer Bibliothek.
Lazarus fügt immer die ganze Bibliothek hinzu, egal ob nur eine Funktion oder 100rte
davon genutzt werden. Wenn also ein Control der LCL genutzt wird, wird die gesamte
LCL hinzugelinkt.

Re: Programmerstellung mit dem formdesigner

Verfasst: 08.06.2013 21:13
von Kevin
The_Dark_Zim-.- hat geschrieben:...ähm PureBasic braucht keine Runtime und meiner Meinung nach ist es recht schwer auf einen fertige EXE zu kommen, die größer als 1,1MB ist, wenn man reinen Quellcode benutzt. ...
Programme mit viel Text verbraucht auch viel. Mein Minceraft Server zum Beispiel kommt auf 919KB (ohne Icon und ohne eingebundene Dateien).

mfg

Re: Programmerstellung mit dem formdesigner

Verfasst: 08.06.2013 21:17
von The_Dark_Zim-.-
@Kevin
Nungut aber das Problem wird keine Sprache los werden, außer sie lagern die Texte extern aus oder Komprimieren die Irgendwie.

@derschutzhund

Ist nichts tolles und auch nicht mit getrennten Dateien :P

Code: Alles auswählen

Enumeration
  #Window_0
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Text_6
  #Text_7
  #String_0
  #String_1
  #Combo_0
  #Combo_1
  #Button_0
  #Button_1
  #ListIcon_1
EndEnumeration

Procedure Open_Window_0()
  
  If OpenWindow(#Window_0, 490, 315, 665, 721, "Kreditzinsrechner von The_Dark_Zim-.-",  #PB_Window_SystemMenu | #PB_Window_TitleBar )
    
    TextGadget(#Text_0, 250, 15, 100, 15, "Monatilicher Beitrag")
    TextGadget(#Text_1, 20, 15, 130, 15, "Kreditsumme")
    TextGadget(#Text_2, 490, 15, 70, 15, "Zinssatz")
    TextGadget(#Text_3, 135, 32, 20, 15, "€")
    TextGadget(#Text_4, 360, 32, 20, 15, "€")
    TextGadget(#Text_6, 605, 32, 30, 25, "%")
    TextGadget(#Text_7, 543, 33, 10, 20, ",")
    StringGadget(#String_0, 20, 30, 110, 20, "", #PB_String_Numeric)
    StringGadget(#String_1, 250, 30, 105, 20, "", #PB_String_Numeric)
    ComboBoxGadget(#Combo_0, 490, 30, 50, 20)
    ComboBoxGadget(#Combo_1, 550, 30, 50, 20)
    ButtonGadget(#Button_0, 15, 65, 565, 40, "Los Gehts")
    ButtonGadget(#Button_1, 587, 65, 60, 40, "?")
    
    ListIconGadget(#ListIcon_1, 15, 120, 635, 590, "Jahr", 100, #PB_ListIcon_FullRowSelect)
    AddGadgetColumn(#ListIcon_1, 1, "Monat", 100)
    AddGadgetColumn(#ListIcon_1, 2, "Insgesamt noch zu zahlen", 100)
    AddGadgetColumn(#ListIcon_1, 3, "Bereits gezahl", 100)
        
  EndIf
EndProcedure

Procedure FillDropdowns()
  
  For i = 0 To 99
    AddGadgetItem(#Combo_1, -1, Str(i) )
    If i < 51
      AddGadgetItem(#Combo_0, -1, Str(i) )
    EndIf
  Next
  
  SetGadgetState(#Combo_0, 0)
  SetGadgetState(#Combo_1, 0)
  
EndProcedure

Procedure Berechne()
  
  ClearGadgetItems(#ListIcon_1) 
  
  Kreditsumme.d = ValD(GetGadgetText(#String_0))
  Beitrag.d = ValD(GetGadgetText(#String_1))
  Zinssatz.d = Val(GetGadgetText(#Combo_0)) + Val(GetGadgetText(#Combo_1)) / 100
  Monat = 1
  MonateInsgesamt = 1
  Jahr = 1
  
  AddGadgetItem(#ListIcon_1, -1, "-" + Chr(10) + "-" + Chr(10) + Str( Kreditsumme ) + Chr(10) + "-")
  
  Kreditsumme + Kreditsumme / 100 * Zinssatz
  
  While Kreditsumme > 0
    
    If Jahr > 50
      MessageRequester("Abbruch", "Der Kredit wurde nach 50 Jahren" + Chr(13) + "immer noch nicht abbezahlt!")
      ProcedureReturn
    EndIf

    AddGadgetItem(#ListIcon_1, -1, Str( Jahr ) + "." + Chr(10) + Str( Monat ) + ". (" + Str( MonateInsgesamt ) + ")" + Chr(10) + StrD( Kreditsumme, 2 ) + "€" + Chr(10) + StrD( Gezahlt.d, 2 ) + "€" )
    
    If Monat = 12
      Monat = 1
      Jahr + 1
      Kreditsumme + Kreditsumme / 100 * Zinssatz
    Else
      Monat + 1
    EndIf
    
    MonateInsgesamt + 1
    Kreditsumme - Beitrag
    Gezahlt.d + Beitrag
    
  Wend
  
    AddGadgetItem(#ListIcon_1, -1, Str( Jahr ) + "."+ Chr(10) + Str( Monat ) + ". (" + Str( MonateInsgesamt ) + ")" + Chr(10) + "-" + Chr(10) + StrD( Kreditsumme + Gezahlt.d, 2 ) + "€" )
    
    If Monat = 12
      MessageRequester("Ergebnis", "Die Kreditlaufzeit beträgt " + Str(Jahr + 1) + " Jahre!")
    Else
      MessageRequester("Ergebnis", "Die Kreditlaufzeit beträgt " + Str(Jahr) + " Jahre und " + Str(Monat) + " Monate!")
    EndIf
  
EndProcedure

Open_Window_0()
FillDropdowns()

Repeat
  
  Event = WaitWindowEvent(10)
  WindowID = EventWindow()
  GadgetID = EventGadget()
  EventType = EventType()
  
  If Event = #PB_Event_Gadget
    
   If GadgetID = #Button_0
      If GetGadgetText(#String_0) <> "" And GetGadgetText(#String_1) <> ""
        If ValD(GetGadgetText(#String_0)) > ValD(GetGadgetText(#String_1))
          Berechne()
        Else
          MessageRequester("Achtung", "Der Beitrag muss kleiner als die Kreditsumme sein!")
        EndIf
      Else
        MessageRequester("Achtung", "Sie müssen alle Felder ausfüllen!")
      EndIf
    ElseIf GadgetID = #Button_1
      MessageRequester("Kreditzinsrechner", "Politik Hausaufgabe zum 30.01.2013" + Chr(13) + "von The_Dark_Zim-.-")
    EndIf
    
  Else
    Delay(1)
  EndIf
  
Until Event = #PB_Event_CloseWindow
und wie gesagt selbe Software in Delphi ist schon 2 MB groß ...

Re: Programmerstellung mit dem formdesigner

Verfasst: 09.06.2013 00:02
von derschutzhund
Habe das Programm mal mit PureBasic in Linux erzeugt 75KB und in Windows 37KB.
Bei eingeschaltetem Antivirenscanner Kaspersky braucht es beim ersten Start ca. 30Sek. !
Danach sofort.
Ist der Virenscanner deaktiviert dann startet es sofort.
Das hatte ich bisher noch bei keinem Exe.
Kann es sein, dass die Exe komprimiert ist und beim ersten Start erst mal dekomprimiert wird?
Mir ist nicht klar wofür der Scanner sonst fast eine Minute braucht um 37KB zu untersuchen!
Sehr merkwürdig!

Habe mal ein Sitzplanprogramm, das ich im letzten Jahr in Delphi geschrieben habe näher untersucht.
Hier kann man wohl kein Bild einfügen oder?
Wie der Name sagt geht es hierbei um die interaktive Sitzplanerstellung.
Am Ende wird ein grafischer Sitzplan als HTML-Datei und eine Schülerliste erstellt.
Das Programm hat eine Größe von 486KB und komprimiert sogar nur 192KB!
Vielleicht arbeitet dein Kollege bei Delphi mit den falschen Compilereinstellungen weil er so große Programme erzeugt.

Re: Programmerstellung mit dem formdesigner

Verfasst: 09.06.2013 00:47
von The_Dark_Zim-.-
Hm kann mir nicht vorstellen das es komprimiert ist. Ich weiß auch nicht wie Kaspersky die Datei untersucht, aber bei Avira startet die Software sofort. Allgemein ist der Compiler eigentlich sehr schnell.

Edit:
Huh ich habe gerade mal neu Kompiliert, ist nun auch bei mir 37kb groß :? Vllt. hatte ich da noch ne ältere Version?

Re: Programmerstellung mit dem formdesigner

Verfasst: 09.06.2013 01:35
von Kevin
The_Dark_Zim-.- hat geschrieben:Edit:
Huh ich habe gerade mal neu Kompiliert, ist nun auch bei mir 37kb groß :? Vllt. hatte ich da noch ne ältere Version?
schalte "Unicode", "threadsafe", "XP skin support", ... aus
derschutzhund hat geschrieben:... Kann es sein, dass die Exe komprimiert ist und beim ersten Start erst mal dekomprimiert wird? ...
Nein ist alles unkomprimiert.

mfg kevin