Write- & Readln nur in Console Mode möglich?
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Write- & Readln nur in Console Mode möglich?
Hallo Mathias
Wollte das Thema schon abhaken.
Im Anhang ist so ein Versuch.
Aber es klemmt schon bei 'Assign (Datei, 'daten.dat');
Was meinst Du denn wie es sein müsste?
Das ist ein einfaches Beispiel das ich einfach einkopiert habe.
Habe nur die Unit 'crt' ans richtige Ort verschoben.
Wollte das Thema schon abhaken.
Im Anhang ist so ein Versuch.
Aber es klemmt schon bei 'Assign (Datei, 'daten.dat');
Was meinst Du denn wie es sein müsste?
Das ist ein einfaches Beispiel das ich einfach einkopiert habe.
Habe nur die Unit 'crt' ans richtige Ort verschoben.
- Dateianhänge
-
- Records with writeln.zip
- (127.19 KiB) 50-mal heruntergeladen
Good code comes from experience, experience comes from bad code.
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Write- & Readln nur in Console Mode möglich?
Aber es klemmt schon bei 'Assign (Datei, 'daten.dat');
Da hast du recht, das wurde bei FPC und Delphi geändert, da Assign für andere Zwecke gebraucht werden.
So lässt es sich kompilieren.
Code: Alles auswählen
AssignFile(Datei, 'daten.dat');
{$I-}
Reset(Datei); (* Datei zum Lesen oeffnen; die Compilerdirektive verhindert Fehlermeldungen *)
Read(Datei, Datensatz); (* die gesamte Struktur einlesen *)
CloseFile(Datei);
Gestohlen hier:
http://www.tutorials.at/pascal/09-dateizugriff.html
Da hast du ein super Tutorial erwischt, von diesem würde ich die Finger lassen.
Bei "file of" stellt man ein f davor.
Da wird nicht mal gezeigt, wie man einen Type richtig deklariert.
Dies hat einen grossen Vorteil, wen man eine Quell-Code lesen will.
Richtig sieht dies so aus:
Code: Alles auswählen
type
TDaten = record
Name: string[50];
Adresse: string[255];
Telefonnummer: string[15];
end;
TGesamte_Daten = array [1..100] of TDaten;
var
Datensatz: TGesamte_Daten;
i: Integer; // ist besser al 1..100, somit kannst du 4'000'000'000 Datensätze speichern.
fDatensatz: file of TGesamte_Daten;
Das schlimmste, du hast GUI und Konsole gemischt.
Um dies zu verhindern, macht unter Lazarus "Datei neu.../Einfaches Programm", somit bist du das ganze GUI-Zeugs los.
Ich möchte nacher auch das mein Code auch auf Linux läuft, desshalb lasse ich das mal mit AllocConsole.
Dies klappt auch unter Linux, da geht dies mit GUI32 nicht, aber es gibt auch eine Lösung.
Wen etwas nicht klappt, einfach weiter Fragen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Write- & Readln nur in Console Mode möglich?
Hallo Mathias
Ja so klappt das. Ein Held Du bist!
Das ist nur irgend ein Code den ich ausprobieren wollte.
Er verwendet 'writeln' zum schreiben in eine Datei.
Das ist im Moment alles was ich testen will.
Ich will ja nur GUI verwenden. Da mach ich was mit einem button und füge den Pascal code ein.
Ist ja nur mal zum testen. Klar gibt es da viel bessere Methoden Files zu lesen.
Da komm ich hoffentlich später noch dazu. Die ersten Brötchen sind noch klein.
Jetzt habe ich was zum Experimentieren.
Vielen Dank dafür!!
Ja so klappt das. Ein Held Du bist!
Das ist nur irgend ein Code den ich ausprobieren wollte.
Er verwendet 'writeln' zum schreiben in eine Datei.
Das ist im Moment alles was ich testen will.
Ich will ja nur GUI verwenden. Da mach ich was mit einem button und füge den Pascal code ein.
Ist ja nur mal zum testen. Klar gibt es da viel bessere Methoden Files zu lesen.
Da komm ich hoffentlich später noch dazu. Die ersten Brötchen sind noch klein.
Jetzt habe ich was zum Experimentieren.
Vielen Dank dafür!!
Good code comes from experience, experience comes from bad code.
Re: Write- & Readln nur in Console Mode möglich?
So fangen alle mal an. Mein ehemaliger bester Freund ist allerdings aus dieser Phase niemals rausgekommen. Er meint zwar, er könne Programmieren, aber das was er kann ist ein Witz. Was ich damit sagen will: "Du kannst niemals Programmieren, aber du kannst es Versuchen, dann wirst du besser!". Programmieren lernen ist ein endloser Prozess, niemand kann alles schaffen, was ich persönlich sehr Schade finde.
-
- Beiträge: 351
- Registriert: Mi 25. Nov 2015, 17:06
- OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
- CPU-Target: i386 + x86_64
- Wohnort: in der Nähe von Stuttgart
- Kontaktdaten:
Re: Write- & Readln nur in Console Mode möglich?
Zu mir meinte auch mal einer er könne viel und ich könne nix außer Hello-World, mittweile realisiere ich große Projekte auf TCP-Server-Client Basis ^^.
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Re: Write- & Readln nur in Console Mode möglich?
compmgmt hat geschrieben:Zu mir meinte auch mal einer er könne viel und ich könne nix außer Hello-World, mittweile realisiere ich große Projekte auf TCP-Server-Client Basis ^^.
Würde ich gerne mal sehen
-
- Beiträge: 351
- Registriert: Mi 25. Nov 2015, 17:06
- OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
- CPU-Target: i386 + x86_64
- Wohnort: in der Nähe von Stuttgart
- Kontaktdaten:
Re: Write- & Readln nur in Console Mode möglich?
itjump hat geschrieben:compmgmt hat geschrieben:Zu mir meinte auch mal einer er könne viel und ich könne nix außer Hello-World, mittweile realisiere ich große Projekte auf TCP-Server-Client Basis ^^.
Würde ich gerne mal sehen
Ich arbeite aktuell an einer Steuerungssoftware für die "ECoS" ("ESU Command Station", ist eine Modellbahnsteuerung) mit lnet. Ich muss nochmal schauen, wie das mit dem Veröffentlichen ist, da lnet unter der modified LGPL steht.
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Write- & Readln nur in Console Mode möglich?
itjump hat geschrieben:So fangen alle mal an. Mein ehemaliger bester Freund ist allerdings aus dieser Phase niemals rausgekommen. Er meint zwar, er könne Programmieren, aber das was er kann ist ein Witz. Was ich damit sagen will: "Du kannst niemals Programmieren, aber du kannst es Versuchen, dann wirst du besser!". Programmieren lernen ist ein endloser Prozess, niemand kann alles schaffen, was ich persönlich sehr Schade finde.
Ich hoffe er ist nicht deswegen ein ehemaliger Freund? Wenn er das Berufsmässig macht, und trotzdem viel verdient ist ja alles bestens.
Bin der Meinung, man sollte zuerst mit etwas sehr sehr einfachem anfangen. Mann sieht es läuft. Kann ein bisschen experimentieren und versteht vieleicht was da passiert.
Hauptsache man hat Freude daran, und kommt eventuell sogar an sein Ziel. Die einen lernen schneller als die anderen. Es gibt sicher auch etwas was dein ehemaliger Freund viel besser kann als Du.
Ich meine, wie Du auch, man kann es versuchen, es braucht ja nicht jeder ein Profi werden.
Pascal / Lazarus ist meiner Meinung nach hervorraged um Programmieren zu lernen.
Und für meine Projekte auf jeden Fall ausreichend.
Good code comes from experience, experience comes from bad code.
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Write- & Readln nur in Console Mode möglich?
Er verwendet 'writeln' zum schreiben in eine Datei.
Dies ist falsch, er verwendet nur Write. WriteLn wird nur bei Text-Dateien gebraucht.
Und die Konsole ist vergleichbar mit mit Textdateien.
Diese beiden Zeilen machen das selbe:
Code: Alles auswählen
Write('Hello World' + LineEnding);
WriteLn('Hello World');
Ist ja nur mal zum testen. Klar gibt es da viel bessere Methoden Files zu lesen.
Schlecht ist diese Methode nicht, sie ist nur sehr alt.
Da sieht man sehr gut was passiert.
Code: Alles auswählen
program Project1;
type
TAdresse = record
Name, Vorname: string[20];
Plz: integer;
Strasse, Ort: string[20]
end;
var
saveAdresse, loadAdress: TAdresse;
fAdresse: file of TAdresse;
begin
// Inizialisieren
with saveAdresse do begin
Name := 'Hugentobler';
Vorname := 'Hans';
Plz := 3000;
Strasse:='Bahnhofst. 123';
Ort := 'Bern';
end;
// Speichern
AssignFile(fAdresse, 'adresse.dat');
Rewrite(fAdresse);
Write(fAdresse, saveAdresse);
CloseFile(fAdresse);
// Laden
AssignFile(fAdresse, 'adresse.dat');
Reset(fAdresse);
Read(fAdresse, loadAdress);
CloseFile(fAdresse);
// Ausgabe
with loadAdress do begin
WriteLn(Name + ' ' + Vorname);
WriteLn(Strasse);
WriteLn(Plz, ' ' + Ort);
end;
end.
Ich denke mal unter DOS war dies einfacher, man konnte vieles mit Read und Write machen und lernte verstehen was der PC machte. Mit den GUIs wurde vieles undurchsichtiger.So fangen alle mal an. Mein ehemaliger bester Freund ist allerdings aus dieser Phase niemals rausgekommen. Er meint zwar, er könne Programmieren, aber das was er kann ist ein Witz.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Write- & Readln nur in Console Mode möglich?
Pascal / Lazarus ist meiner Meinung nach hervorraged um Programmieren zu lernen.
Und für meine Projekte auf jeden Fall ausreichend.
Nicht nur für Anfänger, man kann sogar richtige Profi-Software damit entwickeln. Man bedenke Lazarus selbst ist auch mit Lazarus entwickelt.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Write- & Readln nur in Console Mode möglich?
Mathias hat geschrieben:Er verwendet 'writeln' zum schreiben in eine Datei.
Dies ist falsch, er verwendet nur Write. WriteLn wird nur bei Text-Dateien gebraucht.
Diese beiden Zeilen machen das selbe:Code: Alles auswählen
Write('Hello World' + LineEnding);
WriteLn('Hello World');Ist ja nur mal zum testen. Klar gibt es da viel bessere Methoden Files zu lesen.
Schlecht ist diese Methode nicht, sie ist nur sehr alt.
Da sieht man sehr gut was passiert.Code: Alles auswählen
program Project1;
type
TAdresse = record
Name, Vorname: string[20];
Plz: integer;
Strasse, Ort: string[20]
end;
var
saveAdresse, loadAdress: TAdresse;
fAdresse: file of TAdresse;
begin
// Inizialisieren
with saveAdresse do begin
Name := 'Hugentobler';
Vorname := 'Hans';
Plz := 3000;
Strasse:='Bahnhofst. 123';
Ort := 'Bern';
end;
// Speichern
AssignFile(fAdresse, 'adresse.dat');
Rewrite(fAdresse);
Write(fAdresse, saveAdresse);
CloseFile(fAdresse);
// Laden
AssignFile(fAdresse, 'adresse.dat');
Reset(fAdresse);
Read(fAdresse, loadAdress);
CloseFile(fAdresse);
// Ausgabe
with loadAdress do begin
WriteLn(Name + ' ' + Vorname);
WriteLn(Strasse);
WriteLn(Plz, ' ' + Ort);
end;
end.Ich denke mal unter DOS war dies einfacher, man konnte vieles mit Read und Write machen und lernte verstehen was der PC machte. Mit den GUIs wurde vieles undurchsichtiger.So fangen alle mal an. Mein ehemaliger bester Freund ist allerdings aus dieser Phase niemals rausgekommen. Er meint zwar, er könne Programmieren, aber das was er kann ist ein Witz.
Deshalb mache ich auch lieber etwas mit CLI Anwendungen. Die sind in der Regel gut Dokumentiert für viele Dinge schlicht besser geeignet. Brauche ich eine GUI, kann ich mir ja immer noch schnell eine mit GTK+ dazu basteln
Re: Write- & Readln nur in Console Mode möglich?
Marc hat geschrieben:itjump hat geschrieben:So fangen alle mal an. Mein ehemaliger bester Freund ist allerdings aus dieser Phase niemals rausgekommen. Er meint zwar, er könne Programmieren, aber das was er kann ist ein Witz. Was ich damit sagen will: "Du kannst niemals Programmieren, aber du kannst es Versuchen, dann wirst du besser!". Programmieren lernen ist ein endloser Prozess, niemand kann alles schaffen, was ich persönlich sehr Schade finde.
Ich hoffe er ist nicht deswegen ein ehemaliger Freund? Wenn er das Berufsmässig macht, und trotzdem viel verdient ist ja alles bestens.
Bin der Meinung, man sollte zuerst mit etwas sehr sehr einfachem anfangen. Mann sieht es läuft. Kann ein bisschen experimentieren und versteht vieleicht was da passiert.
Hauptsache man hat Freude daran, und kommt eventuell sogar an sein Ziel. Die einen lernen schneller als die anderen. Es gibt sicher auch etwas was dein ehemaliger Freund viel besser kann als Du.
Ich meine, wie Du auch, man kann es versuchen, es braucht ja nicht jeder ein Profi werden.
Pascal / Lazarus ist meiner Meinung nach hervorraged um Programmieren zu lernen.
Und für meine Projekte auf jeden Fall ausreichend.
Nein, der Grund war ein anderer und Beruflich macht der das auch nicht, dazu hat er auch zu wenig Kenntnisse, was leider auf mich auch Zutrifft. Er meinte halt, er könne was, nur weil sein Vater Diplom-Informatiker ist, was natürlich nicht Richtig ist. Ich bin Asperger Autist, und muss trotzdem hart an mir Arbeiten, um etwas beim Programmieren zu lernen . Ich lerne vielleicht um einiges schneller bei diesen Themen, als Menschen ohne Autismus, jedoch habe ich dadurch Teilweiße Motivationsprobleme, weil ich mich an niemanden messen kann, zumindest nicht in diesem Thema. Mein ehemaliger bester Freund kahm nur leider nicht mehr mit mir klar, weil ich leider bestimmte Dinge nicht selbst erkennen konnte, wodurch ich der Meinung war, es sei alles OK. Er wusste das, hat mich aber nicht Akzeptiert. Naja, so kann man sich in Menschen täuschen
Ja, ich versuche halt immer näher an die Hardware ranzukommen, mit HEX und Assembler funktioniert das auch super, allerdings sehe ich andere Sprachen, die Ähnliche Dinge schaffen und mir dabei eine Menge Arbeit abnehmen, z.B C/C++ oder auch Pascal. Man lässt sich halt am Anfang noch Recht gut ablenken, wodurch man aber meiner Meinung nach am meisten lernt, wenn man dadurch z.B. dann Spontan mal eben 6-7 Programmiersprachen parallel lernt
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Write- & Readln nur in Console Mode möglich?
Die Methode ist uralt. Pascal zu DOS Zeiten.
Aber wenn man das nicht versteht braucht man auch nicht objektorientiert weitermachen.
Aber ist wunderbar wenn das heute noch so funktioniert.
Ist wie in der Mechaniker Ausbildung. In der ersten Woche gibts erst mal eine Feile und ein Stück Metall. Da wird nicht gleich an der CNC Maschine gearbeitet.
Zumindest hoffe ich das das noch so ist.
Aber wenn man das nicht versteht braucht man auch nicht objektorientiert weitermachen.
Aber ist wunderbar wenn das heute noch so funktioniert.
Ist wie in der Mechaniker Ausbildung. In der ersten Woche gibts erst mal eine Feile und ein Stück Metall. Da wird nicht gleich an der CNC Maschine gearbeitet.
Zumindest hoffe ich das das noch so ist.
Good code comes from experience, experience comes from bad code.
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Write- & Readln nur in Console Mode möglich?
Ist wie in der Mechaniker Ausbildung. In der ersten Woche gibts erst mal eine Feile und ein Stück Metall. Da wird nicht gleich an der CNC Maschine gearbeitet.
Zumindest hoffe ich das das noch so ist.
Leider immer weniger.
In der Grundschule das Gleiche, man kann nicht mal mehr 1+1 im Kopf zusammenzählen, ohne Technische Hilfsmittel.
Die Methode ist uralt. Pascal zu DOS Zeiten.
Aber immer noch sehr gut.
Wie würdest du das Beispiel mit der Adresse abspeichern ?
TFileStream, aber dies ist schon komplexer.
Hier noch ein Tutorial: https://www.delphi-treff.de/tipps-trick ... speichern/
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Write- & Readln nur in Console Mode möglich?
@itjump. Bin jetzt kein Arzt, aber ich glaube auch nicht das sich Programmierkenntnisse vererben lassen.
Wobei Ausnahmen bestätigen die Regel
Ist bestimmt nicht einfach mit Autismus zu leben.
Aber ich weiss jetzt das ich Dich mal was ganz schwieriges fragen werde.
@Mathias Ja dann kriegt man statt einem Mechaniker einen CNC Operator.
Ich habe mir gedacht auf dieselbe alte Weise.
Wenn das dann klappt, mit was eleganterem.
Du hast jetzt schon TFileStream vorgeschlagen.
Ganz am Schluss hätte ich ein paar Projekte die ich unbedingt damit realisieren will.
Mal sehen wie weit ich komme.
Wobei Ausnahmen bestätigen die Regel
Ist bestimmt nicht einfach mit Autismus zu leben.
Aber ich weiss jetzt das ich Dich mal was ganz schwieriges fragen werde.
@Mathias Ja dann kriegt man statt einem Mechaniker einen CNC Operator.
Ich habe mir gedacht auf dieselbe alte Weise.
Wenn das dann klappt, mit was eleganterem.
Du hast jetzt schon TFileStream vorgeschlagen.
Ganz am Schluss hätte ich ein paar Projekte die ich unbedingt damit realisieren will.
Mal sehen wie weit ich komme.
Good code comes from experience, experience comes from bad code.