Starthilfe bei Grafik-Programm erbeten

Für Fragen von Einsteigern und Programmieranfängern...
creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von creed steiger »

Naja die "alten" Methoden gehen ja alle noch

http://wiki.freepascal.org/File_Handling_In_Pascal

kommt halt aufs File und was du damit machen willst an evtl. wäre eine (Sqlite) Datenbank die bessere Lösung.
als Anregung:
http://wiki.lazarus.freepascal.org/Howt ... OpenDialog
http://wiki.freepascal.org/TStringList- ... utorial/de

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

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von theo »

nelke12 hat geschrieben: Da ich Lazarus noch nicht kapiere und allein nicht weiter komme, möchte ich fragen ob mir jemand
in meinem Lazarus OO Programm die Auswahl von Files und das Einlesen implementiert ?
Willst du das nicht selber lernen? Das gehört doch nun wirklich zu den absoluten Grundlagen der Programmierung.
Wenn es dich so gar nicht interessiert, kannst du dein Projekt ja gleich in Auftrag geben.

nelke12
Beiträge: 15
Registriert: Mo 7. Apr 2014, 10:21

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von nelke12 »

Danke an creed steiger für die Hinweise. Das File Handling stellte sich für mich nicht als Problem dar,
sondern die Einbindung in das abgeänderte Zeichenprogramm von Michl.
Danke auch an theo, der mich aufrütteln möchte und fragt, ob es mich denn gar nicht interessiert.

Doch, es interessiert mich schon sehr, Lazarus zu verstehen, aber ich sehe meine Grenzen wenn ich in zig Stunden aus zwei Büchern mit
über 1500 Seiten nicht erkenne, was für mich denn am wichtigsten ist.
Ich bin ein alter Knabe, der sich ohne Hilfe so komplexe Dinge wie Klassenbibliotheken nicht autodidaktisch anlernen kann.

Mit Lazarus habe ich eine Spielwiese gefunden mit der ich alte Programme wieder lauffähig machen oder neue Ideen umsetzen kann,
aber die Hürden der Klassenbibliotheken kann ich alleine nicht überwinden. Deshalb suche ich wie beim Tauchen einen Buddy,
dem ich ein Programm vorstellen kann und der mir bei der Korrektur hilft.

Ich hoffe, dass ein Mitglied so nett ist und sich bei mir über eine PN meldet.

ps. mein Ergebnis-Bild anzufügen schaffte ich in mehreren Versuchen auch mit unterschiedlichen Formaten nicht.

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

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von Michl »

Warum per PN, nachfolgende Leser interessiert möglicherweise auch diese Frage?!

Es gibt verschiedene Möglichkeiten Grafiken zu speichern. Lazarus stellt recht komfortable Möglichkeiten mit Hilfe objektorientierter Methoden zur Verfügung, z.B. in TPicture (Speicherung mehrerer Grafikformate möglich).

z.B.
- Neue Anwendung, zwei TButtons, ein TImage (Komponentenpalette Additional) und ein TSaveDialog (Komponentenpalette Dialogs) auf das Formular
- im Eventhandler von Button1 zeichnest Du auf das Canvas vom Image1
- Im Eventhandler von Button2 nutzt Du SaveDialog1 und speicherst Image1.Picture in eine Datei (z.B. Test.jpg)

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  i, x, y, size: Integer;
begin
  for i:=0 to 100 do begin
    size:=random(10)+10;
    x:=Random(Image1.ClientWidth - size);
    y:=Random(Image1.ClientHeight - size);
    Image1.Canvas.Brush.Color:=Random($1000000);
    Image1.Canvas.Ellipse(x, y, x+size, y+size);
  end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
    Image1.Picture.SaveToFile(SaveDialog1.FileName);
end; 

Code: Alles auswählen

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

nelke12
Beiträge: 15
Registriert: Mo 7. Apr 2014, 10:21

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von nelke12 »

Hallo Michl, vermutlich hast du mein ps. falsch aufgefasst.
Ich wollte zu meiner Antwort im Forum ein Bild hochladen und habe es nicht geschafft.

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

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von Michl »

nelke12 hat geschrieben:Hallo Michl, vermutlich hast du mein ps. falsch aufgefasst.
Ich wollte zu meiner Antwort im Forum ein Bild hochladen und habe es nicht geschafft.
:lol: ...ja, das habe ich wohl, weiss nicht, was ich da gestern gelesen hab...

Ansonsten kann man unterhalb des Eingabefeldes im Reiter "Dateianhang hochladen" ein Bild hochladen, das funktioniert allerdings z.Zt. bei mir auch nicht. Ich habe eben die Administratoren in Kenntnis gesetzt!

Code: Alles auswählen

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

Cybermonkey342
Beiträge: 109
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von Cybermonkey342 »

nelke12 hat geschrieben: Andererseits habe ich ein Programm unter Einbeziehung der alten BP crt- und graph- unit erstellt mit dem ich in alter Manier
Files einlesen und die gewünschte Grafik erzeugen kann.
Leider nicht mit der von mir gewünschten Farblogik weil es da nur 16 vordefinierte Farben gibt.
Hier wollte ich 2 Ergebnis- Bilder hochladen, aber es wird gemeldet, dass die Größe des Bildes nicht ermittelt werden kann.
Benutze doch mit Freepascal ptccrt und ptcgraph, das funktioniert einwandfrei mit Windows oder Linux. Wenn du mehr als 16 Farben brauchst solltest du folgendermaßen initieren:

Code: Alles auswählen

var gd,gm:smallint;
begin
gd:=d16bit;
gm:=m1024x768;
initgraph (gd,gm,'');
...
end;	
 
Farbwerte sind dann von 0-65535 (mehr als 16bit Farbtiefe geht da leider nicht), mit folgender Funktion können die Farbwerte auch als RGB-Werte angegeben werden:

Code: Alles auswählen

function hrgb (red,green,blue:byte):word;
begin
result:=  (((red Shr 3) Shl 11) + ((green Shr 2) Shl 5) + (blue Shr 3));
end;
Damit habe ich einen kompletten Snake-Clone programmiert, auch mein Oldschool-Interpreter basiert auf ptcgraph: http://cmb.retrogamecoding.org/
Ich hoffe, ich konnte weiterhelfen.
Mit besten Grüßen,
Cybermonkey

nelke12
Beiträge: 15
Registriert: Mo 7. Apr 2014, 10:21

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von nelke12 »

Hallo zusammen, ich melde mich mit einem Erfolg.

Cybermonkey hat mir mit dem Rat in freepascal ptccrt und ptcgraph zu benutzen entscheidend geholfen.
Damit kann ich 16bit Farbtiefe ausnutzen und eine farblogische Palette verwenden.

Vermutlich ist in der unit ptccrt ein Bug, denn readln und writeln funktionieren dann nicht mehr. Writeln kann aber durch outtextxy ersetzt werden.
Als Ausweg für readln habe ich im Grafikmodus die Funktion GrInput verwendet, die mir Cybermonkey freundlicherweise zur Verfügung stellte.

Für Leute, wie mich, die sich mit Lazarus und OO schwer tun, ist freepascal mit ptccrt und ptcgraph eine Alternative.
Ich bin happy, dass ich mit Lazarus eine Entwicklungsumgebung habe, auf der ich mit meinen alten BP Kenntnissen
jetzt wieder auf einem modernen Rechner arbeiten kann.
Besten Dank an alle die mir geantwortet haben.
Dateianhänge
pv2009.PNG

Cybermonkey342
Beiträge: 109
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von Cybermonkey342 »

nelke12 hat geschrieben:Hallo zusammen, ich melde mich mit einem Erfolg.
Vermutlich ist in der unit ptccrt ein Bug, denn readln und writeln funktionieren dann nicht mehr. Writeln kann aber durch outtextxy ersetzt werden.
Als Ausweg für readln habe ich im Grafikmodus die Funktion GrInput verwendet, die mir Cybermonkey freundlicherweise zur Verfügung stellte.
Freut mich, dass ich helfen konnte. Der Bug scheint nur in Windows-Betriebssystemen zu existieren, denn unter Linux funktioniert writeln und readln weiterhin.
Mit besten Grüßen,
Cybermonkey

Mathias
Beiträge: 6906
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von Mathias »

Für Leute, wie mich, die sich mit Lazarus und OO schwer tun, ist freepascal mit ptccrt und ptcgraph eine Alternative.
Ich bin happy, dass ich mit Lazarus eine Entwicklungsumgebung habe, auf der ich mit meinen alten BP Kenntnissen
jetzt wieder auf einem modernen Rechner arbeiten kann.
Besten Dank an alle die mir geantwortet haben.
Da muss ich zustimmen, Lazarus und FPC ist ein echter Nachfolger von Turbo-Pascal. Die meisten TP-Programme kann man portieren, ausgenommen man hat direkt auf die Hardware zugegriffen. Dies habe ich früher meist gemacht um mehr Speed aus den Programmen rauszuholen.
ptccrt und ptcgraph
Was hat man da für Vorteile gegenüber der normalen Unit CRT und GRAPH ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

nelke12
Beiträge: 15
Registriert: Mo 7. Apr 2014, 10:21

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von nelke12 »

Dass man endlich 16bit Farbtiefe hat und damit auch Pastelltöne erzeugen kann.

nelke12
Beiträge: 15
Registriert: Mo 7. Apr 2014, 10:21

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von nelke12 »

Hallo,
hier nun ein fertiges Grafik Ergebnis von freepascal mit ptc, mal grau mal bunt, an der rechten Skala sieht man die Farbstufung.

Ich habe mir 2 Paletten erzeugt und mit den Funktionen hGRB und GetKey und Grinput (von Cybermonkey) in einer unit abgelegt.

Hat jemanden eine Info, ob an dem Readln-Bug in ptccrt und Windows gearbeitet wird ?
Es ist lästig bei Eingaben und Textausgaben immer im Grafikmodus arbeiten zu müssen.

MfG Nelk12
Dateianhänge
Bild in Graustufen
Bild in Graustufen
Bild in Farbe
Bild in Farbe

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

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von Michl »

nelke12 hat geschrieben:Hat jemanden eine Info, ob an dem Readln-Bug in ptccrt und Windows gearbeitet wird ?
Es ist lästig bei Eingaben und Textausgaben immer im Grafikmodus arbeiten zu müssen.
Du könntest ein Minimalbeispiel erstellen (alz zip und lädst es hier hoch), welches das fehlerhafte Verhalten zeigt. Dann kann man das unter Win/Linux testen. Falls es tatsächlich ein Bug ist, kannst Du den Bugtracker in Kenntnis setzen (am besten mit dem angehangenen Minimalbeispiel).

MMn: evtl. ist es doch günstiger, Du versuchst Dich in die objektorientierte Programmierung einzuarbeiten und nutzt Formulare. Da gibt es viele fertige Komponenten, Klassen und deren Methoden, die Du für grafische Ein- und Ausgaben nutzen kannst - ist eigentlich wirklich nicht so kompliziert (ich kann Dich verstehen, meine letzte Version war TurboPascal 7, bevor ich nach einiger Programmierabstinenz mit Lazarus/FPC wieder ein Zuhause gefunden habe).

Code: Alles auswählen

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

Antworten