Seite 1 von 3

n paar Fragen zu Turbo Pascal

Verfasst: 03.01.2006 21:17
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

Verfasst: 07.01.2006 17:14
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.

Verfasst: 07.01.2006 17:54
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.

Verfasst: 08.01.2006 17:25
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.

Verfasst: 08.01.2006 21:13
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

Verfasst: 08.01.2006 21:22
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.

Verfasst: 08.01.2006 21:27
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...

Verfasst: 08.01.2006 21:28
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?

Verfasst: 08.01.2006 21:31
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:

Verfasst: 08.01.2006 21:52
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.