n paar Fragen zu Turbo Pascal

Fragen zu allen anderen Programmiersprachen.
ArminF
Beiträge: 46
Registriert: 06.12.2005 13:47
Wohnort: Glottertal

n paar Fragen zu Turbo Pascal

Beitrag von ArminF »

Tagchen. Bin gerade ein wenig am rumspielen mit turbo pascal 6.0

Hab dazu ein paar kleine fragen, vielleicht könnt ihr mir dabei weiterhelfen:

1. In PureBasic kann ich ja einen Text aus der windows-zwischenablage in eine variable kopieren. Geht etwas ähnliches in TurboPascal auch und wenn ja wie?

2. Strings in PureBasic können ja max. ca. 64.000 Zeichen lang sein. Bei TurboPascal aber nur 255 Zeichen lang. Wie schaffe ich es in TurboPascal mit langen (ca. 11.000 Zeichen) Zeichenketten zu arbeiten (in dieser Zeichenkette sollten kurze Zeichenabfolgen gesucht werden)? Macht da ein Array Sinn (eindimensionales Array mit 11.000 Elementen? Hört sich für mich als Laien irgendwie schon bescheuert an, ich weiß ja nicht :freak: )


Nachträglich n gutes neues Jahr!!! :)


grüße

ArminF
QuickBasic
Beiträge: 75
Registriert: 11.09.2004 12:54

Beitrag von QuickBasic »

In Turbo Pascal kannst du KEINE Texte aus der
Zwischenablage übernehmen, weil:

Zwischenablage = WINDOWS
Turbo Pascal = DOS

Beides passt nicht zusammen!

Leg' die Daten in einer Datei ab und ja, DU KANNST mit Turbo Pascal
Strings mit 64000 Zeichen haben! Dafür gibts die Unit "strings", allerdings
sind diese Strings NULLTERMINIERT, also muss man mit ihnen arbeiten,
wie mit C-Strings: StrCopy, StrDispose...

Hier ein Beispiel:

Code: Alles auswählen

Program PCHAR_DEMO;

Uses Crt, Strings;

Var MeineVariable:PChar;
    i, len:LongInt;

Begin
ClrScr;                                        {Bildschirm loeschen}
StrCopy(MeineVariable,'');                     {Initialisierung}
StrCopy(MeineVariable,'Hello World!');         {Hello World nach MeineVar}
len := StrLen(MeineVariable);                  {Laenge ermitteln}
For i := 1 To len Do
Begin
   Write(Char(MeineVariable^));                {MeineVar als POINTER und
   Inc(MeineVariable);                          hochzaehlen in Schleife}
End;
Dec(MeineVariable,len);                        {MeineVar auf erstes Zeichen}
StrDispose(MeineVariable);                     {MeineVar ordnungsg. entsorgen}
Readln;                                        {Warten auf Tastendruck}
End.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

bei turbo pascal 7 gibt es auch tp7 für windows. ist aber für win 3.11, aber vieleicht ist zumindest der zugriff auf die zwischenablage rückwärtskompatibel.
QuickBasic
Beiträge: 75
Registriert: 11.09.2004 12:54

Beitrag von QuickBasic »

bei turbo pascal 7 gibt es auch tp7 für windows. ist aber für win 3.11, aber vieleicht ist zumindest der zugriff auf die zwischenablage rückwärtskompatibel.
Diese Aussage ist falsch, weil:
bei BORLAND PASCAL 7.0 (= Turbo Pascal 7.0 für PC-DOS + (!!!!!!!!!!!!)
Turbo Pascal für WINDOWS 3.xx) besteht die Möglichkeit, in einer
DOS-IDE Windows-Programme zu schreiben, und dort natürlich die
Zwischenablage zu benutzen!
In DOS-Programmen geht es NICHT, es sei denn, man benutzt die CMD
//DOSBOX ab WIN95, mit der kann man Markiertes und Kopiertes in ein
DOS-Programm einfügen, ansonsten geht sowas NICHT!

/OK, das Deutsch da oben ist nicht perfekt!!!
2. Strings in PureBasic können ja max. ca. 64.000 Zeichen lang sein. Bei TurboPascal aber nur 255 Zeichen lang. Wie schaffe ich es in TurboPascal mit langen (ca. 11.000 Zeichen) Zeichenketten zu arbeiten (in dieser Zeichenkette sollten kurze Zeichenabfolgen gesucht werden)? Macht da ein Array Sinn (eindimensionales Array mit 11.000 Elementen? Hört sich für mich als Laien irgendwie schon bescheuert an, ich weiß ja nicht Freak )
Special Service for YOU:

Ein Programm, das eine Textdatei in den Speicher liest und nach einem
eingegebenen String sucht:

Code: Alles auswählen

{$X+}                           {ERWEITERTER SYNTAX!!!}

Program PCHAR_DEMO2_35;

Uses Crt, Strings;

Var P, such_p:PChar; fn, such:String;
    i, k, l:LongInt;
    f:File;

Const MAXZEICHEN = 23500;

Begin
ClrScr;
Writeln('Hallo du! Ja, DU vor dem Bildschirm!');
Writeln('Gib mal den KOMPLETTEN Pfad zu einer TEXTDATEI ein!');
Readln(fn);
{$I-}
Assign(f,fn);
Reset(f,1);
{$I+}
If (IORESULT <> 0) Then
Begin
   Writeln('HEH, die Datei gibts ja garnicht! Jetzt musst du NEUSTARTEN!');
   Readln;
   Halt(1);
End;
Writeln('Ok, und dann ein Wort/Satz..., dass gesucht werden soll!');
Readln(such);
Writeln('Auch OK! Und los gehts...'); Writeln; Writeln;
i := FileSize(f);
If (i > MAXZEICHEN) Then
Begin
   Writeln('Datei zu gross! Jetzt musst du NEUSTARTEN!');
   Readln;
   Halt(2);
End;

GetMem(P,i);
such_p := StrNew(' ');
StrPCopy(such_p,such);

BlockRead(f,P^,i);
Close(f);

If (StrPos(P,such_p) = NIL) Then
   Writeln('Zeichenkette ',such,' kommt in ',fn,' NICHT vor!!!')
Else
    Writeln(such,' kommt in ',fn,' an Adresse ',StrPos(P,such_p)-P,' vor!');
Readln;
FreeMem(P,i);
StrDispose(such_p);
End.
ArminF
Beiträge: 46
Registriert: 06.12.2005 13:47
Wohnort: Glottertal

Beitrag von ArminF »

hach ist das schön... hier werden sie geholfen :D

das sind ja schon mal wieder ein paar anhaltspunkte wie ich weiterspielen kann.

(und endlich mal ein thread, in dem ich nicht gefragt werde, was ich mit so einer steinzeitlichen programmiersprache eigentlich will)

+wink+ grüße ausm glottertal nach FR
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

bei meinem tp für windows ist auch eine windows ide, komplett mit hübschen graphischen editor bei, vieleicht gibt es ja da verschiedene varianten (meine kam in einem großem karton würfel, komplett mit einem halben duzend handbücher), oder was genau war dein einwand, den hab ich nicht so wirklich verstanden.
ArminF
Beiträge: 46
Registriert: 06.12.2005 13:47
Wohnort: Glottertal

Beitrag von ArminF »

ne ne keine panik das war kein einwand gegen jemanden der mir hier in diesem thread netterweise weiterhilft. ich hatte halt schon von verschiedenen leuten die kommentare zu turbopascal bekommen "wozu so ne steinzeitliche programmiersprache wenn ich HEUTE meine Dr.Arbeit mache" (nachzulesen im meinem "arrays in turbopascal"-Thread)

ps. klar wenn ich mal an turbo pascal 7 rankomme, dann wär dat natürlich komfortabel...
Zuletzt geändert von ArminF am 08.01.2006 21:29, insgesamt 1-mal geändert.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

ArminF hat geschrieben: (und endlich mal ein thread, in dem ich nicht gefragt werde, was ich mit so einer steinzeitlichen programmiersprache eigentlich will)
Doch eine Frage hätte ich dazu :wink:
Soweit mir bekannt ist, laufen die mit TP erzeugten Programme auf AMD
Processoren ab 350 MHz nicht mehr. Gibt zwar eine RunTimePatch von
Borland dafür, der funzt aber auch nicht bei allen.

Aber ich denke mal, Du machst das nur zum Üben und willst keine
Programme weitergeben?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
ArminF
Beiträge: 46
Registriert: 06.12.2005 13:47
Wohnort: Glottertal

Beitrag von ArminF »

ts-soft hat geschrieben:
Aber ich denke mal, Du machst das nur zum Üben und willst keine
Programme weitergeben?

letzten endes ja. gut, der rechner an dem ich derzeit turbopascal 6.0 laufen habe ist mein privatrechner mit win98 drauf 400 mhz prozesssor (pentium2). DAS ist wirklich steinzeitlich :lol:
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

ich meinte QuickBasic.
hatte dein posting auch nicht als einwand verstanden.
betrifft diese amd problematik nicht nur den eh grottehschlechten K6? auf K7 gab es da kein problem bei mir mit tp7 kompilierten programmen.
Antworten